The condition was intended for non-BSP processors to
disable timer, but apic_id != 0 means it could affect BSP
if its apic id is non-zero. Fixes this bug.
---
i386/i386/apic.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/i386/i386/apic.c b/i386/i386/apic.c
index 41b33599..7ec8c49b 100644
--- a/i386/i386/apic.c
+++ b/i386/i386/apic.c
@@ -326,14 +326,11 @@ void
lapic_setup(void)
{
unsigned long flags;
- int apic_id;
volatile uint32_t dummy;
int cpu = cpu_number_slow();
cpu_intr_save(&flags);
- apic_id = apic_get_cpu_apic_id(cpu);
-
/* Flat model */
dummy = lapic->dest_format.r;
lapic->dest_format.r = 0xffffffff;
@@ -348,7 +345,7 @@ lapic_setup(void)
lapic->lvt_lint1.r = dummy | LAPIC_DISABLE;
dummy = lapic->lvt_performance_monitor.r;
lapic->lvt_performance_monitor.r = dummy | LAPIC_DISABLE;
- if (apic_id != 0)
+ if (cpu > 0)
{
dummy = lapic->lvt_timer.r;
lapic->lvt_timer.r = dummy | LAPIC_DISABLE;
--
2.45.2