If mixed mode is not enabled by the APIC enumerator (MPTable always does,

ACPI MADT only does if the PC-AT flag is set), then don't assume that pin 0
on the first I/O APIC is an ExtINT pin.  Instead, assume that it is ISA
IRQ 0.
This commit is contained in:
John Baldwin 2005-02-22 21:50:41 +00:00
parent 3cdbd5fb04
commit 2e7e36c961

View File

@ -547,10 +547,11 @@ ioapic_create(uintptr_t addr, int32_t apic_id, int intbase)
/*
* Assume that pin 0 on the first I/O APIC is an ExtINT pin
* and that pins 1-15 are ISA interrupts. Assume that all
* if mixed mode is enabled and an ISA interrupt if not.
* Assume that pins 1-15 are ISA interrupts and that all
* other pins are PCI interrupts.
*/
if (intpin->io_vector == 0)
if (intpin->io_vector == 0 && mixed_mode_enabled)
ioapic_set_extint(io, i);
else if (intpin->io_vector < IOAPIC_ISA_INTS) {
intpin->io_bus = APIC_BUS_ISA;