summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2025-06-22 07:36:10 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2025-06-22 21:41:30 +0200
commitf2eb25f27b7224cbf964ff59d68656ae9a5ff2d3 (patch)
tree160f7cb5dc38f7bd0424abc0984956761fa54a58
parent1a6e2d721989a0059b8cfe91b604bc33637ec4c7 (diff)
acpi: Ignore irq 9 requests because PIIX3 ACPI is wrongv0.9.git20250622
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. Message-ID: <20250622073557.188295-1-damien@zamaudio.com>
-rw-r--r--acpi/acpi-ops.c9
1 files changed, 9 insertions, 0 deletions
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;