Fall back to bios defaults for requests for irq 9.
Ideally we could check the PIIX3 bridge device exists on
pci, but that would require pci access before pci-arbiter
exists.  This is a convenient workaround for now.

---
 acpi/acpi-ops.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/acpi/acpi-ops.c b/acpi/acpi-ops.c
index 16d96e71..8fc6104f 100644
--- a/acpi/acpi-ops.c
+++ b/acpi/acpi-ops.c
@@ -30,6 +30,13 @@
 #include <acpi/acpi_init.h>
 #include "acpifs.h"
 
+/* PIIX3 chipset returns IRQ 9 for all ACPI irq requests
+ * but IDE is actually wired to legacy irqs 14 and 15.
+ * To avoid needing pci access in acpi, we can consider
+ * all mappings to 9 to be invalid irqs and use
+ * bios defaults for these requests instead. */
+#define WRONG_IRQ 9
+
 static error_t
 check_permissions (struct protid *master, int flags)
 {
@@ -83,6 +90,8 @@ S_acpi_get_pci_irq (struct protid *master,
     return err;
 
   ret = acpi_get_irq_number(bus, dev, func);
+  if (ret == WRONG_IRQ)
+    return EOPNOTSUPP;
   if (ret < 0)
     return EIO;
 
-- 
2.45.2



Reply via email to