summaryrefslogtreecommitdiffstats
path: root/sys/dev/acpica
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2004-06-14 18:54:14 +0000
committerjhb <jhb@FreeBSD.org>2004-06-14 18:54:14 +0000
commit3effd7dce0b1936a4fa6bd5cdf66bf70103e490a (patch)
treed2f2c180419019c1b1a74ab1efbc68e4c7a71537 /sys/dev/acpica
parent012043d12581821c1a8d44301d0e7a85064a17f7 (diff)
downloadFreeBSD-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.c16
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);
}
OpenPOWER on IntegriCloud