http://linux-acpi.bkbits.net/linux-acpi-test-2.6.7 len.brown@intel.com|ChangeSet|20040512055731|24130 len.brown # This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2004/05/12 01:57:31-04:00 len.brown@intel.com # Merge intel.com:/home/lenb/src/linux-acpi-test-2.6.6 # into intel.com:/home/lenb/src/linux-acpi-test-2.6.7 # # arch/i386/mach-es7000/es7000plat.c # 2004/05/12 01:57:24-04:00 len.brown@intel.com +0 -0 # Auto merged # # BitKeeper/deleted/.del-setup.c~1b687d49b2d0b042 # 2004/05/12 01:57:24-04:00 len.brown@intel.com +0 -0 # Auto merged # # arch/i386/mach-es7000/es7000plat.c # 2004/05/12 01:57:24-04:00 len.brown@intel.com +0 -0 # Merge rename: arch/i386/mach-es7000/es7000.c -> arch/i386/mach-es7000/es7000plat.c # # BitKeeper/deleted/.del-setup.c~1b687d49b2d0b042 # 2004/05/12 01:57:24-04:00 len.brown@intel.com +0 -0 # Merge rename: arch/i386/mach-es7000/setup.c -> BitKeeper/deleted/.del-setup.c~1b687d49b2d0b042 # # ChangeSet # 2004/05/12 00:37:02-04:00 len.brown@intel.com # [ACPI] if _STA.functional, set _STA.present (Bjorn Helgaas) # workaround for Big Sur and Bull systems # # drivers/acpi/bus.c # 2004/05/12 00:36:55-04:00 len.brown@intel.com +8 -0 # if _STA.functional, set _STA.present # workaround for Big Sur and Bull systems # # ChangeSet # 2004/05/11 23:53:05-04:00 len.brown@intel.com # [ACPI] create platform_rename_gsi() so ES7000 can munge IRQ numbers # from Natalie Protasevich # # arch/i386/mach-es7000/es7000.c # 2004/05/11 23:53:00-04:00 len.brown@intel.com +24 -0 # platform_rename_gsi = es7000_rename_gsi # # arch/i386/kernel/mpparse.c # 2004/05/11 23:53:00-04:00 len.brown@intel.com +4 -4 # call platform_rename_gsi() to allow ES7000 to munge IRQ#'s # # arch/i386/mach-es7000/setup.c # 2004/05/11 17:18:42-04:00 len.brown@intel.com +2 -1 # whitespace # # ChangeSet # 2004/05/10 16:48:38-04:00 len.brown@intel.com # [ACPI] handle _CRS outside _PRS -- even when non-zero # avoid sharing IRQ12 # http://bugzilla.kernel.org/show_bug.cgi?id=2665 # # drivers/acpi/pci_link.c # 2004/05/10 16:42:35-04:00 len.brown@intel.com +11 -5 # handle _CRS outside _PRS even when non-zero # avoid sharing IRQ12 # # ChangeSet # 2004/05/02 21:51:20-07:00 akpm@bix.(none) # Merge http://linux-acpi.bkbits.net/linux-acpi-test-2.6.6 # into bix.(none):/usr/src/bk-acpi # # Documentation/kernel-parameters.txt # 2004/05/02 21:51:18-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/04/27 00:59:21-07:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-acpi # # Documentation/kernel-parameters.txt # 2004/04/27 00:59:18-07:00 akpm@bix.(none) +0 -0 # Auto merged # diff -Nru a/arch/i386/kernel/mpparse.c b/arch/i386/kernel/mpparse.c --- a/arch/i386/kernel/mpparse.c Wed May 12 20:24:23 2004 +++ b/arch/i386/kernel/mpparse.c Wed May 12 20:24:23 2004 @@ -1029,6 +1029,8 @@ #ifdef CONFIG_ACPI_PCI +int (*platform_rename_gsi)(int ioapic, int gsi); + void __init mp_parse_prt (void) { struct list_head *node = NULL; @@ -1072,10 +1074,8 @@ continue; ioapic_pin = gsi - mp_ioapic_routing[ioapic].gsi_base; - if (es7000_plat) { - if (!ioapic && (gsi < 16)) - gsi += 16; - } + if (platform_rename_gsi) + gsi = platform_rename_gsi(ioapic, gsi); /* * Avoid pin reprogramming. PRTs typically include entries diff -Nru a/arch/i386/mach-es7000/es7000plat.c b/arch/i386/mach-es7000/es7000plat.c --- a/arch/i386/mach-es7000/es7000plat.c Wed May 12 20:24:23 2004 +++ b/arch/i386/mach-es7000/es7000plat.c Wed May 12 20:24:23 2004 @@ -50,6 +50,29 @@ struct mip_reg *host_reg; int mip_port; unsigned long mip_addr, host_addr; +extern int (*platform_rename_gsi)(); + +static int __init +es7000_rename_gsi(int ioapic, int gsi) +{ + if (ioapic) + return gsi; + else { + if (gsi == 0) + return 13; + if (gsi == 1) + return 16; + if (gsi == 4) + return 17; + if (gsi == 6) + return 18; + if (gsi == 7) + return 19; + if (gsi == 8) + return 20; + return gsi; + } +} /* * Parse the OEM Table @@ -116,6 +139,7 @@ } else { printk("\nEnabling ES7000 specific features...\n"); es7000_plat = 1; + platform_rename_gsi = es7000_rename_gsi; } return es7000_plat; } diff -Nru a/drivers/acpi/bus.c b/drivers/acpi/bus.c --- a/drivers/acpi/bus.c Wed May 12 20:24:23 2004 +++ b/drivers/acpi/bus.c Wed May 12 20:24:23 2004 @@ -112,6 +112,14 @@ else STRUCT_TO_INT(device->status) = 0x0F; + if (device->status.functional && !device->status.present) { + printk(KERN_WARNING PREFIX "Device [%s] status [%08x]: " + "functional but not present; setting present\n", + device->pnp.bus_id, + (u32) STRUCT_TO_INT(device->status)); + device->status.present = 1; + } + ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device [%s] status [%08x]\n", device->pnp.bus_id, (u32) STRUCT_TO_INT(device->status))); diff -Nru a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c --- a/drivers/acpi/pci_link.c Wed May 12 20:24:23 2004 +++ b/drivers/acpi/pci_link.c Wed May 12 20:24:23 2004 @@ -479,7 +479,7 @@ PIRQ_PENALTY_PCI_AVAILABLE, /* IRQ9 PCI, often acpi */ PIRQ_PENALTY_PCI_AVAILABLE, /* IRQ10 PCI */ PIRQ_PENALTY_PCI_AVAILABLE, /* IRQ11 PCI */ - PIRQ_PENALTY_ISA_TYPICAL, /* IRQ12 mouse */ + PIRQ_PENALTY_ISA_USED, /* IRQ12 mouse */ PIRQ_PENALTY_ISA_USED, /* IRQ13 fpe, sometimes */ PIRQ_PENALTY_ISA_USED, /* IRQ14 ide0 */ PIRQ_PENALTY_ISA_USED, /* IRQ15 ide1 */ @@ -546,17 +546,23 @@ if (link->irq.active == link->irq.possible[i]) break; } + /* + * forget active IRQ that is not in possible list + */ + if (i == link->irq.possible_count) { + if (acpi_strict) + printk(KERN_WARNING PREFIX "_CRS %d not found" + " in _PRS\n", link->irq.active); + link->irq.active = 0; + } /* * if active found, use it; else pick entry from end of possible list. */ - if (i != link->irq.possible_count) { + if (link->irq.active) { irq = link->irq.active; } else { irq = link->irq.possible[link->irq.possible_count - 1]; - if (acpi_strict) - printk(KERN_WARNING PREFIX "_CRS %d not found" - " in _PRS\n", link->irq.active); } if (acpi_irq_balance || !link->irq.active) {