drivers/interrupt_controller/ioapic_intr.c: broadcast interrupts

When SMP is enabled, the kernel expects that interrupts be delivered
to all CPUs in the system. Change the I/O APIC RTEs accordingly.

Signed-off-by: Charles E. Youse <charles.youse@intel.com>
This commit is contained in:
Charles E. Youse 2019-09-30 16:03:46 -04:00 committed by Anas Nashif
commit 5a9a33b0cf

View file

@ -117,7 +117,7 @@ int _ioapic_init(struct device *unused)
IOAPIC_PHYSICAL | 0 /* dummy vector */;
for (ix = 0; ix < CONFIG_IOAPIC_NUM_RTES; ix++) {
ioApicRedSetHi(ix, 0);
ioApicRedSetHi(ix, 0xFF000000);
ioApicRedSetLo(ix, rteValue);
}
#endif
@ -242,7 +242,7 @@ int ioapic_resume_from_suspend(struct device *port)
IOAPIC_FIXED | IOAPIC_INT_MASK |
IOAPIC_PHYSICAL | 0 ; /* dummy vector*/
}
ioApicRedSetHi(irq, 0);
ioApicRedSetHi(irq, 0xFF000000);
ioApicRedSetLo(irq, rteValue);
}
ioapic_device_power_state = DEVICE_PM_ACTIVE_STATE;
@ -295,7 +295,7 @@ void z_ioapic_irq_set(unsigned int irq, unsigned int vector, u32_t flags)
rteValue = IOAPIC_FIXED | IOAPIC_INT_MASK | IOAPIC_PHYSICAL |
(vector & IOAPIC_VEC_MASK) | flags;
ioApicRedSetHi(irq, 0);
ioApicRedSetHi(irq, 0xFF000000);
ioApicRedSetLo(irq, rteValue);
}