diff options
author | jhb <jhb@FreeBSD.org> | 2004-06-14 18:54:14 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2004-06-14 18:54:14 +0000 |
commit | 3effd7dce0b1936a4fa6bd5cdf66bf70103e490a (patch) | |
tree | d2f2c180419019c1b1a74ab1efbc68e4c7a71537 /sys/dev/acpica | |
parent | 012043d12581821c1a8d44301d0e7a85064a17f7 (diff) | |
download | FreeBSD-src-3effd7dce0b1936a4fa6bd5cdf66bf70103e490a.zip FreeBSD-src-3effd7dce0b1936a4fa6bd5cdf66bf70103e490a.tar.gz |
Revert the removal of the initial_irq hack for now as this code is more
broken than I thought and doesn't do a good job of routing virgin
interrupts at all.
Diffstat (limited to 'sys/dev/acpica')
-rw-r--r-- | sys/dev/acpica/acpi_pci_link.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/sys/dev/acpica/acpi_pci_link.c b/sys/dev/acpica/acpi_pci_link.c index 630d11f..400aa14 100644 --- a/sys/dev/acpica/acpi_pci_link.c +++ b/sys/dev/acpica/acpi_pci_link.c @@ -48,6 +48,7 @@ struct acpi_pci_link_entry { TAILQ_ENTRY(acpi_pci_link_entry) links; ACPI_HANDLE handle; UINT8 current_irq; + UINT8 initial_irq; ACPI_RESOURCE possible_resources; UINT8 number_of_interrupts; UINT8 interrupts[MAX_POSSIBLE_INTERRUPTS]; @@ -72,9 +73,6 @@ static struct acpi_prt_entries acpi_prt_entries; static int irq_penalty[MAX_ACPI_INTERRUPTS]; -static int acpi_pci_link_is_valid_irq(struct acpi_pci_link_entry *link, - UINT8 irq); - #define ACPI_STA_PRESENT 0x00000001 #define ACPI_STA_ENABLE 0x00000002 #define ACPI_STA_SHOWINUI 0x00000004 @@ -384,12 +382,7 @@ acpi_pci_link_add_link(ACPI_HANDLE handle, struct acpi_prt_entry *entry) acpi_name(handle), AcpiFormatException(error))); } - if (!acpi_pci_link_is_valid_irq(link, link->current_irq)) { - ACPI_DEBUG_PRINT((ACPI_DB_WARN, - "initial IRQ %u is invalid for link %s\n", - link->current_irq, acpi_name(handle))); - link->current_irq = 0; - } + link->initial_irq = link->current_irq; error = AcpiGetPossibleResources(handle, &buf); if (ACPI_FAILURE(error)) { @@ -532,6 +525,11 @@ acpi_pci_link_is_valid_irq(struct acpi_pci_link_entry *link, UINT8 irq) if (link->interrupts[i] == irq) return (1); } + + /* allow initial IRQ as valid one. */ + if (link->initial_irq == irq) + return (1); + return (0); } |