BSP is not added to the mask of valid target CPUs for interrupts
in set_apic_interrupt_ids(). Besides, set_apic_interrupts_ids() is not called in the !SMP case too. Fix this by: - Adding the BSP as an interrupt target directly in cpu_startup(). - Remove an obsolete optimization where the BSP are skipped in set_apic_interrupt_ids(). Reported by: jh Reviewed by: jhb MFC after: 3 days X-MFC: r233961 Pointy hat to: me
This commit is contained in:
parent
4360dc9ca8
commit
6c01a6d7fd
@ -295,6 +295,11 @@ cpu_startup(dummy)
|
||||
vm_pager_bufferinit();
|
||||
|
||||
cpu_setregs();
|
||||
|
||||
/*
|
||||
* Add BSP as an interrupt target.
|
||||
*/
|
||||
intr_add_cpu(0);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -785,8 +785,6 @@ init_secondary(void)
|
||||
* We tell the I/O APIC code about all the CPUs we want to receive
|
||||
* interrupts. If we don't want certain CPUs to receive IRQs we
|
||||
* can simply not tell the I/O APIC code about them in this function.
|
||||
* We also do not tell it about the BSP since it tells itself about
|
||||
* the BSP internally to work with UP kernels and on UP machines.
|
||||
*/
|
||||
static void
|
||||
set_interrupt_apic_ids(void)
|
||||
@ -797,8 +795,6 @@ set_interrupt_apic_ids(void)
|
||||
apic_id = cpu_apic_ids[i];
|
||||
if (apic_id == -1)
|
||||
continue;
|
||||
if (cpu_info[apic_id].cpu_bsp)
|
||||
continue;
|
||||
if (cpu_info[apic_id].cpu_disabled)
|
||||
continue;
|
||||
|
||||
|
@ -336,6 +336,11 @@ cpu_startup(dummy)
|
||||
#ifndef XEN
|
||||
cpu_setregs();
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Add BSP as an interrupt target.
|
||||
*/
|
||||
intr_add_cpu(0);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -819,8 +819,6 @@ init_secondary(void)
|
||||
* We tell the I/O APIC code about all the CPUs we want to receive
|
||||
* interrupts. If we don't want certain CPUs to receive IRQs we
|
||||
* can simply not tell the I/O APIC code about them in this function.
|
||||
* We also do not tell it about the BSP since it tells itself about
|
||||
* the BSP internally to work with UP kernels and on UP machines.
|
||||
*/
|
||||
static void
|
||||
set_interrupt_apic_ids(void)
|
||||
@ -831,8 +829,6 @@ set_interrupt_apic_ids(void)
|
||||
apic_id = cpu_apic_ids[i];
|
||||
if (apic_id == -1)
|
||||
continue;
|
||||
if (cpu_info[apic_id].cpu_bsp)
|
||||
continue;
|
||||
if (cpu_info[apic_id].cpu_disabled)
|
||||
continue;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user