# This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2004/03/25 17:40:31-05:00 len.brown@intel.com # [ACPI] PCI interrupt link routing (Luming Yu) # use _PRS to determine resource type for _SRS # fixes HP Proliant servers # http://bugzilla.kernel.org/show_bug.cgi?id=1590 # # drivers/acpi/pci_link.c # 2004/03/25 17:34:37-05:00 len.brown@intel.com +13 -5 # determine resource type from _PRS for benefit of _SRS # todo: retry_programming can probably be deleted # diff -Nru a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c --- a/drivers/acpi/pci_link.c Thu Mar 25 17:40:38 2004 +++ b/drivers/acpi/pci_link.c Thu Mar 25 17:40:38 2004 @@ -72,6 +72,7 @@ u8 edge_level; /* All IRQs */ u8 active_high_low; /* All IRQs */ u8 setonboot; + u8 resource_type; u8 possible_count; u8 possible[ACPI_PCI_LINK_MAX_POSSIBLE]; }; @@ -123,6 +124,7 @@ } link->irq.edge_level = p->edge_level; link->irq.active_high_low = p->active_high_low; + link->irq.resource_type = ACPI_RSTYPE_IRQ; break; } case ACPI_RSTYPE_EXT_IRQ: @@ -143,6 +145,7 @@ } link->irq.edge_level = p->edge_level; link->irq.active_high_low = p->active_high_low; + link->irq.resource_type = ACPI_RSTYPE_EXT_IRQ; break; } default: @@ -342,13 +345,18 @@ } } + resource_type = link->irq.resource_type; + + if (resource_type != ACPI_RSTYPE_IRQ && + resource_type != ACPI_RSTYPE_EXT_IRQ){ /* If IRQ<=15, first try with a "normal" IRQ descriptor. If that fails, try with * an extended one */ - if (irq <= 15) { - resource_type = ACPI_RSTYPE_IRQ; - } else { - resource_type = ACPI_RSTYPE_EXT_IRQ; - } + if (irq <= 15) { + resource_type = ACPI_RSTYPE_IRQ; + } else { + resource_type = ACPI_RSTYPE_EXT_IRQ; + } + } retry_programming: