Lines Matching defs:cpu
116 static boolean_t cpu_signal_pending(int cpu, mp_event_t event);
267 * Initialize (or re-initialize) the descriptor tables for this cpu.
311 kprintf("Started cpu %d (lapic id %08x)\n", slot_num, lapic);
519 i386_cpu_IPI(int cpu)
524 if(cpu_datap(cpu)->cpu_signals & 6) { /* (BRINGUP) */
525 kprintf("i386_cpu_IPI: sending enter debugger signal (%08X) to cpu %d\n", cpu_datap(cpu)->cpu_signals, cpu);
531 if(!trappedalready && (cpu_datap(cpu)->cpu_signals & 6)) { /* (BRINGUP) */
534 panic("i386_cpu_IPI: sending enter debugger signal (%08X) to cpu %d and I do not own debugger, owner = %08X\n",
535 cpu_datap(cpu)->cpu_signals, cpu, kdb_cpu);
554 LAPIC_WRITE(ICRD, cpu_to_lapic[cpu] << LAPIC_ICRD_DEST_SHIFT);
565 cpu_interrupt(int cpu)
568 && pmCPUExitIdle(cpu_datap(cpu))) {
569 i386_cpu_IPI(cpu);
577 cpu_NMI_interrupt(int cpu)
584 LAPIC_WRITE(ICRD, cpu_to_lapic[cpu] << LAPIC_ICRD_DEST_SHIFT);
605 cpu_PM_interrupt(int cpu)
610 if (cpu == cpu_number())
613 i386_signal_cpu(cpu, MP_CALL_PM, ASYNC);
624 i386_signal_cpu(int cpu, mp_event_t event, mp_sync_t mode)
626 volatile int *signals = &cpu_datap(cpu)->cpu_signals;
630 if (!cpu_datap(cpu)->cpu_running)
634 KERNEL_DEBUG(0xef800020 | DBG_FUNC_START, cpu, 0, 0, 0, 0);
636 DBGLOG(cpu_signal, cpu, event);
639 i386_cpu_IPI(cpu);
648 cpu, event);
653 KERNEL_DEBUG(0xef800020 | DBG_FUNC_END, cpu, 0, 0, 0, 0);
663 unsigned int cpu;
668 for (cpu = 0; cpu < real_ncpus; cpu++) {
669 if (cpu == my_cpu || !cpu_datap(cpu)->cpu_running)
671 i386_signal_cpu(cpu, event, mode);
682 unsigned int cpu;
687 for (cpu = 0; cpu < real_ncpus; cpu++) {
688 if (cpu_datap(cpu)->cpu_running)
785 /* call executor function on this cpu */
870 * mp_cpus_call() runs a given function on cpus specified in a given cpu mask.
872 * in logical cpu order. If the mode is ASYNC, the function is called in
875 * The cpu mask may include the local cpu. Offline cpus are ignored.
886 cpu_t cpu;
911 for (cpu = 0; cpu < (cpu_t) real_ncpus; cpu++) {
912 if (((cpu_to_cpumask(cpu) & cpus) == 0) ||
913 !cpu_datap(cpu)->cpu_running)
915 if (cpu == (cpu_t) cpu_number()) {
928 * Bump count of other cpus called and signal this cpu.
936 i386_signal_cpu(cpu, MP_CALL, ASYNC);
969 cpu = mp_rv_ncpus + (call_self ? 1 : 0);
973 return cpu;
1017 mp_bc_ncpus = i386_active_cpus(); /* total including this cpu */
1021 /* call executor function on this cpu */
1070 * In case a rendezvous/braodcast/call was initiated to this cpu
1093 unsigned int cpu;
1102 * In case of races, only one cpu is allowed to enter kdp after
1128 for (ncpus = 1, cpu = 0; cpu < real_ncpus; cpu++) {
1129 if (cpu == my_cpu || !cpu_datap(cpu)->cpu_running)
1132 i386_signal_cpu(cpu, MP_KDP, ASYNC);
1161 for (cpu = 0; cpu < real_ncpus; cpu++) {
1162 if (cpu == my_cpu || !cpu_datap(cpu)->cpu_running)
1164 if (cpu_signal_pending(cpu, MP_KDP))
1165 cpu_NMI_interrupt(cpu);
1170 for (cpu = 0; cpu < real_ncpus; cpu++) {
1171 if (cpu == my_cpu || !cpu_datap(cpu)->cpu_running)
1173 cpu_NMI_interrupt(cpu);
1183 cpu_signal_pending(int cpu, mp_event_t event)
1185 volatile int *signals = &cpu_datap(cpu)->cpu_signals;
1269 int cpu = processor->cpu_num;
1271 if (cpu != cpu_number()) {
1272 i386_signal_cpu(cpu, MP_AST, ASYNC);
1285 unsigned int cpu;
1291 for (kdb_ncpus = 1, cpu = 0; cpu < real_ncpus; cpu++) {
1292 if (cpu == my_cpu || !cpu_datap(cpu)->cpu_running)
1295 i386_signal_cpu(cpu, MP_KDB, ASYNC);
1412 cpu_init(); /* Sets cpu_running which starter cpu waits for */
1421 * We're in the cpu's interrupt stack with interrupts disabled.