# This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet 1.1315.9.1 -> 1.1315.9.2 # drivers/acpi/pci_link.c 1.17 -> 1.18 # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 03/09/18 len.brown@intel.com 1.1323.1.1 # Merge intel.com:/home/lenb/src/linux-acpi-test-2.6.0 # into intel.com:/home/lenb/bk/linux-acpi-test-2.6.0 # -------------------------------------------- # 03/09/18 davej@redhat.com 1.1315.3.3 # [CPUFREQ] Read MSRs before trying to use them in powernow-k7 # Very silly bug spotted by Ducrot Bruno # -------------------------------------------- # 03/09/18 len.brown@intel.com 1.1315.9.2 # Handle BIOS with _CRS that fails (Jun Nakajima) # -------------------------------------------- # diff -Nru a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c --- a/drivers/acpi/pci_link.c Tue Sep 23 12:30:43 2003 +++ b/drivers/acpi/pci_link.c Tue Sep 23 12:30:43 2003 @@ -220,7 +220,6 @@ return AE_CTRL_TERMINATE; } - static int acpi_pci_link_get_current ( struct acpi_pci_link *link) @@ -279,6 +278,28 @@ return_VALUE(result); } +static int +acpi_pci_link_try_get_current ( + struct acpi_pci_link *link, + int irq) +{ + int result; + + ACPI_FUNCTION_TRACE("acpi_pci_link_try_get_current"); + + result = acpi_pci_link_get_current(link); + if (result && link->irq.active) { + return_VALUE(result); + } + + if (!link->irq.active) { + ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "No active IRQ resource found\n")); + printk(KERN_WARNING "_CRS returns NULL! Using IRQ %d for device (%s [%s]).\n", irq, acpi_device_name(link->device), acpi_device_bid(link->device)); + link->irq.active = irq; + } + + return 0; +} static int acpi_pci_link_set ( @@ -361,7 +382,7 @@ } /* Make sure the active IRQ is the one we requested. */ - result = acpi_pci_link_get_current(link); + result = acpi_pci_link_try_get_current(link, irq); if (result) { return_VALUE(result); } @@ -574,10 +595,6 @@ else printk(" %d", link->irq.possible[i]); } - if (!link->irq.active) - printk(", disabled"); - else if (!found) - printk(", enabled at IRQ %d", link->irq.active); printk(")\n"); /* TBD: Acquire/release lock */