Changeset View
Changeset View
Standalone View
Standalone View
head/sys/amd64/amd64/mp_machdep.c
Show First 20 Lines • Show All 217 Lines • ▼ Show 20 Lines | cpu_mp_start(void) | ||||
/* Install an inter-CPU IPI for CPU stop/restart */ | /* Install an inter-CPU IPI for CPU stop/restart */ | ||||
setidt(IPI_STOP, pti ? IDTVEC(cpustop_pti) : IDTVEC(cpustop), | setidt(IPI_STOP, pti ? IDTVEC(cpustop_pti) : IDTVEC(cpustop), | ||||
SDT_SYSIGT, SEL_KPL, 0); | SDT_SYSIGT, SEL_KPL, 0); | ||||
/* Install an inter-CPU IPI for CPU suspend/resume */ | /* Install an inter-CPU IPI for CPU suspend/resume */ | ||||
setidt(IPI_SUSPEND, pti ? IDTVEC(cpususpend_pti) : IDTVEC(cpususpend), | setidt(IPI_SUSPEND, pti ? IDTVEC(cpususpend_pti) : IDTVEC(cpususpend), | ||||
SDT_SYSIGT, SEL_KPL, 0); | SDT_SYSIGT, SEL_KPL, 0); | ||||
/* Install an IPI for calling delayed SWI */ | |||||
setidt(IPI_SWI, pti ? IDTVEC(ipi_swi_pti) : IDTVEC(ipi_swi), | |||||
SDT_SYSIGT, SEL_KPL, 0); | |||||
/* Set boot_cpu_id if needed. */ | /* Set boot_cpu_id if needed. */ | ||||
if (boot_cpu_id == -1) { | if (boot_cpu_id == -1) { | ||||
boot_cpu_id = PCPU_GET(apic_id); | boot_cpu_id = PCPU_GET(apic_id); | ||||
cpu_info[boot_cpu_id].cpu_bsp = 1; | cpu_info[boot_cpu_id].cpu_bsp = 1; | ||||
} else | } else | ||||
KASSERT(boot_cpu_id == PCPU_GET(apic_id), | KASSERT(boot_cpu_id == PCPU_GET(apic_id), | ||||
("BSP's APIC ID doesn't match boot_cpu_id")); | ("BSP's APIC ID doesn't match boot_cpu_id")); | ||||
▲ Show 20 Lines • Show All 878 Lines • Show Last 20 Lines |