madt: Configure interrupt trigger mode does not work quite well yet.
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Thu, 24 Mar 2011 11:05:41 +0000 (19:05 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Fri, 25 Mar 2011 14:58:31 +0000 (22:58 +0800)
One of my system has interrupt storm on ACPI SCI (irq 9) after
change ACPI SCI mode to level/low (was edge/high).

sys/platform/pc32/i386/mp_madt.c
sys/platform/pc64/x86_64/mp_madt.c

index 51ddcb1..9183181 100644 (file)
@@ -846,9 +846,11 @@ madt_ioapic_enum_callback(void *xarg, const struct acpi_madt_ent *ent)
                           MADT_INT_TRIG_SHIFT;
                if (ent_trig == MADT_INT_TRIG_RSVD) {
                        return 0;
+#ifdef notyet
                } else if (ent_trig == MADT_INT_TRIG_LEVEL) {
                        trig = INTR_TRIGGER_LEVEL;
                        pola = INTR_POLARITY_LOW;
+#endif
                } else {
                        trig = INTR_TRIGGER_EDGE;
                        pola = INTR_POLARITY_HIGH;
index aafcbd8..f386ee9 100644 (file)
@@ -845,9 +845,11 @@ madt_ioapic_enum_callback(void *xarg, const struct acpi_madt_ent *ent)
                           MADT_INT_TRIG_SHIFT;
                if (ent_trig == MADT_INT_TRIG_RSVD) {
                        return 0;
+#ifdef notyet
                } else if (ent_trig == MADT_INT_TRIG_LEVEL) {
                        trig = INTR_TRIGGER_LEVEL;
                        pola = INTR_POLARITY_LOW;
+#endif
                } else {
                        trig = INTR_TRIGGER_EDGE;
                        pola = INTR_POLARITY_HIGH;