acpi: Don't set non-exist EXT IRQ
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Thu, 22 Jan 2015 01:33:04 +0000 (09:33 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Thu, 22 Jan 2015 01:33:04 +0000 (09:33 +0800)
Certain mobo, e.g. gigabyte H97N-WIFI, reports EXT IRQ 37 and 38,
which do not exist at all (max legacy IRQ is 23).  Don't set bus
resource for this kind of IRQ resources.

Tested-by: dillon@
sys/dev/acpica/acpi_resource.c

index 8fa59c1..a7119f5 100644 (file)
@@ -593,6 +593,11 @@ acpi_res_set_ext_irq(device_t dev, void *context, uint32_t *irq, int count,
     if (count != 1)
        return;
 
+    /* There is no such IRQ at all */
+    if (machintr_legacy_intr_find(*irq,
+       INTR_TRIGGER_CONFORM, INTR_POLARITY_CONFORM) < 0)
+       return;
+
     bus_set_resource(dev, SYS_RES_IRQ, cp->ar_nirq++, *irq, 1,
         machintr_legacy_intr_cpuid(*irq));
 }