summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/dev/acpica/acpi_pci_link.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/dev/acpica/acpi_pci_link.c b/sys/dev/acpica/acpi_pci_link.c
index 731a987..79ba4f8 100644
--- a/sys/dev/acpica/acpi_pci_link.c
+++ b/sys/dev/acpica/acpi_pci_link.c
@@ -416,6 +416,13 @@ acpi_pci_link_add_link(ACPI_HANDLE handle, struct acpi_prt_entry *entry)
* zero and flags to indicate this link is not routed. If we can't
* run _DIS (i.e., the method doesn't exist), assume the initial
* IRQ was routed by the BIOS.
+ *
+ * XXX Since we detect link devices via _PRT entries but run long
+ * after APIC mode has been enabled, we don't get a chance to
+ * disable links that will be unused (especially in APIC mode).
+ * Leaving them enabled can cause duplicate interrupts for some
+ * devices. The right fix is to probe links via their PNPID, so we
+ * see them no matter what the _PRT says.
*/
if (ACPI_SUCCESS(AcpiEvaluateObject(handle, "_DIS", NULL, NULL))) {
link->current_irq = 0;
OpenPOWER on IntegriCloud