From f2eb25f27b7224cbf964ff59d68656ae9a5ff2d3 Mon Sep 17 00:00:00 2001 From: Damien Zammit Date: Sun, 22 Jun 2025 07:36:10 +0000 Subject: acpi: Ignore irq 9 requests because PIIX3 ACPI is wrong 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> --- acpi/acpi-ops.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'acpi/acpi-ops.c') 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 #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; -- cgit v1.2.3