--- //depot/vendor/freebsd/src/sys/i386/acpica/madt.c 2003/11/14 14:30:38 +++ //depot/user/jhb/acpipci/i386/acpica/madt.c 2003/11/20 10:41:28 @@ -554,8 +553,16 @@ } ioapic_set_triggermode(new_ioapic, new_pin, interrupt_trigger(intr->TriggerMode)); - ioapic_set_polarity(new_ioapic, new_pin, - interrupt_polarity(intr->Polarity)); + if (intr->TriggerMode == APIC_TRIGGER_LEVEL && + intr->Polarity == APIC_POLARITY_ACTIVEHI) { + if (bootverbose) + printf( + "MADT: Forcing active-lo polarity for level triggered IRQ %d\n", + intr->Source); + ioapic_set_polarity(new_ioapic, new_pin, 0); + } else + ioapic_set_polarity(new_ioapic, new_pin, + interrupt_polarity(intr->Polarity)); } /*