Index: acpi_pci_link.c =================================================================== RCS file: /usr/cvs/src/sys/dev/acpica/acpi_pci_link.c,v retrieving revision 1.10 diff -u -r1.10 acpi_pci_link.c --- acpi_pci_link.c 20 Nov 2003 21:23:49 -0000 1.10 +++ acpi_pci_link.c 20 Nov 2003 21:23:52 -0000 @@ -51,7 +51,9 @@ TAILQ_ENTRY(acpi_pci_link_entry) links; ACPI_HANDLE handle; UINT8 current_irq; +#ifndef __amd64__ UINT8 initial_irq; +#endif ACPI_RESOURCE possible_resources; UINT8 number_of_interrupts; UINT8 interrupts[MAX_POSSIBLE_INTERRUPTS]; @@ -77,6 +79,9 @@ 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 @@ -396,7 +401,15 @@ acpi_name(handle), AcpiFormatException(error))); } +#ifndef __amd64__ link->initial_irq = link->current_irq; +#endif + 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; + } error = AcpiGetPossibleResources(handle, &buf); if (ACPI_FAILURE(error)) { @@ -549,10 +562,12 @@ } } +#ifndef __amd64__ /* allow initial IRQ as valid one. */ if (link->initial_irq == irq) { return (1); } +#endif return (0); }