# This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2005/04/01 00:07:31-05:00 len.brown@intel.com # [ACPI] PNPACPI vs sound IRQ # # http://bugme.osdl.org/show_bug.cgi?id=4016 # # Written-by: David Shaohua Li # Acked-by: Adam Belay # Signed-off-by: Len Brown # # include/linux/acpi.h # 2005/01/11 21:12:55-05:00 len.brown@intel.com +1 -1 # PNPACPI vs sound IRQ # # include/asm-x86_64/pci.h # 2005/01/11 21:03:54-05:00 len.brown@intel.com +1 -1 # PNPACPI vs sound IRQ # # include/asm-sparc64/pci.h # 2005/01/11 21:04:00-05:00 len.brown@intel.com +1 -1 # PNPACPI vs sound IRQ # # include/asm-sparc/pci.h # 2005/01/11 21:04:00-05:00 len.brown@intel.com +1 -1 # PNPACPI vs sound IRQ # # include/asm-sh64/pci.h # 2005/01/11 21:04:00-05:00 len.brown@intel.com +1 -1 # PNPACPI vs sound IRQ # # include/asm-sh/pci.h # 2005/01/11 21:04:00-05:00 len.brown@intel.com +1 -1 # PNPACPI vs sound IRQ # # include/asm-ppc64/pci.h # 2005/01/11 21:03:54-05:00 len.brown@intel.com +1 -1 # PNPACPI vs sound IRQ # # include/asm-ppc/pci.h # 2005/01/11 21:08:28-05:00 len.brown@intel.com +1 -1 # PNPACPI vs sound IRQ # # include/asm-mips/pci.h # 2005/01/11 21:03:54-05:00 len.brown@intel.com +1 -1 # PNPACPI vs sound IRQ # # include/asm-m68k/pci.h # 2005/01/11 21:04:00-05:00 len.brown@intel.com +1 -1 # PNPACPI vs sound IRQ # # include/asm-ia64/pci.h # 2005/01/11 21:04:00-05:00 len.brown@intel.com +1 -1 # PNPACPI vs sound IRQ # # include/asm-i386/pci.h # 2005/01/11 21:04:00-05:00 len.brown@intel.com +1 -1 # PNPACPI vs sound IRQ # # include/asm-h8300/pci.h # 2005/01/11 21:04:00-05:00 len.brown@intel.com +1 -1 # PNPACPI vs sound IRQ # # include/asm-arm/pci.h # 2005/01/11 21:06:45-05:00 len.brown@intel.com +1 -1 # PNPACPI vs sound IRQ # # include/asm-alpha/pci.h # 2005/01/11 21:04:00-05:00 len.brown@intel.com +1 -1 # PNPACPI vs sound IRQ # # drivers/pnp/resource.c # 2005/01/11 21:09:53-05:00 len.brown@intel.com +1 -1 # PNPACPI vs sound IRQ # # drivers/pnp/pnpbios/rsparser.c # 2005/01/11 21:10:55-05:00 len.brown@intel.com +1 -1 # PNPACPI vs sound IRQ # # drivers/pnp/pnpacpi/rsparser.c # 2005/01/11 21:11:40-05:00 len.brown@intel.com +2 -2 # PNPACPI vs sound IRQ # # drivers/acpi/pci_link.c # 2005/01/11 21:15:10-05:00 len.brown@intel.com +5 -2 # PNPACPI vs sound IRQ # # arch/i386/pci/visws.c # 2005/01/11 21:03:54-05:00 len.brown@intel.com +1 -1 # PNPACPI vs sound IRQ # # arch/i386/pci/irq.c # 2005/01/11 21:15:49-05:00 len.brown@intel.com +10 -6 # PNPACPI vs sound IRQ # # arch/frv/mb93090-mb00/pci-irq.c # 2005/04/01 00:07:22-05:00 len.brown@intel.com +1 -1 # PNPACPI vs sound IRQ # Index: linux-2.6.13/arch/frv/mb93090-mb00/pci-irq.c =================================================================== --- linux-2.6.13.orig/arch/frv/mb93090-mb00/pci-irq.c 2005-07-10 01:01:46.000000000 -0400 +++ linux-2.6.13/arch/frv/mb93090-mb00/pci-irq.c 2005-07-10 01:05:27.000000000 -0400 @@ -60,7 +60,7 @@ } } -void __init pcibios_penalize_isa_irq(int irq) +void __init pcibios_penalize_isa_irq(int irq, int active) { } Index: linux-2.6.13/arch/i386/pci/irq.c =================================================================== --- linux-2.6.13.orig/arch/i386/pci/irq.c 2005-07-10 01:01:47.000000000 -0400 +++ linux-2.6.13/arch/i386/pci/irq.c 2005-07-10 01:05:27.000000000 -0400 @@ -1051,24 +1051,28 @@ subsys_initcall(pcibios_irq_init); -static void pirq_penalize_isa_irq(int irq) +static void pirq_penalize_isa_irq(int irq, int active) { /* * If any ISAPnP device reports an IRQ in its list of possible * IRQ's, we try to avoid assigning it to PCI devices. */ - if (irq < 16) - pirq_penalty[irq] += 100; + if (irq < 16) { + if (active) + pirq_penalty[irq] += 1000; + else + pirq_penalty[irq] += 100; + } } -void pcibios_penalize_isa_irq(int irq) +void pcibios_penalize_isa_irq(int irq, int active) { #ifdef CONFIG_ACPI_PCI if (!acpi_noirq) - acpi_penalize_isa_irq(irq); + acpi_penalize_isa_irq(irq, active); else #endif - pirq_penalize_isa_irq(irq); + pirq_penalize_isa_irq(irq, active); } static int pirq_enable_irq(struct pci_dev *dev) Index: linux-2.6.13/arch/i386/pci/visws.c =================================================================== --- linux-2.6.13.orig/arch/i386/pci/visws.c 2005-07-10 01:01:48.000000000 -0400 +++ linux-2.6.13/arch/i386/pci/visws.c 2005-07-10 01:05:27.000000000 -0400 @@ -21,7 +21,7 @@ int (*pcibios_enable_irq)(struct pci_dev *dev) = &pci_visws_enable_irq; -void __init pcibios_penalize_isa_irq(int irq) {} +void __init pcibios_penalize_isa_irq(int irq, int active) {} unsigned int pci_bus0, pci_bus1; Index: linux-2.6.13/drivers/acpi/pci_link.c =================================================================== --- linux-2.6.13.orig/drivers/acpi/pci_link.c 2005-07-10 01:04:27.000000000 -0400 +++ linux-2.6.13/drivers/acpi/pci_link.c 2005-07-10 01:05:27.000000000 -0400 @@ -804,9 +804,12 @@ * There is no ISA_POSSIBLE weight, so we simply use * the (small) PCI_USING penalty. */ -void acpi_penalize_isa_irq(int irq) +void acpi_penalize_isa_irq(int irq, int active) { - acpi_irq_penalty[irq] += PIRQ_PENALTY_PCI_USING; + if (active) + acpi_irq_penalty[irq] += PIRQ_PENALTY_ISA_USED; + else + acpi_irq_penalty[irq] += PIRQ_PENALTY_PCI_USING; } /* Index: linux-2.6.13/drivers/pnp/pnpacpi/rsparser.c =================================================================== --- linux-2.6.13.orig/drivers/pnp/pnpacpi/rsparser.c 2005-07-10 01:05:04.000000000 -0400 +++ linux-2.6.13/drivers/pnp/pnpacpi/rsparser.c 2005-07-10 01:05:27.000000000 -0400 @@ -160,7 +160,7 @@ acpi_register_gsi(res->data.irq.interrupts[0], res->data.irq.edge_level, res->data.irq.active_high_low)); - pcibios_penalize_isa_irq(res->data.irq.interrupts[0]); + pcibios_penalize_isa_irq(res->data.irq.interrupts[0], 1); } break; @@ -171,7 +171,7 @@ acpi_register_gsi(res->data.extended_irq.interrupts[0], res->data.extended_irq.edge_level, res->data.extended_irq.active_high_low)); - pcibios_penalize_isa_irq(res->data.extended_irq.interrupts[0]); + pcibios_penalize_isa_irq(res->data.extended_irq.interrupts[0], 1); } break; case ACPI_RSTYPE_DMA: Index: linux-2.6.13/drivers/pnp/pnpbios/rsparser.c =================================================================== --- linux-2.6.13.orig/drivers/pnp/pnpbios/rsparser.c 2005-07-10 01:01:34.000000000 -0400 +++ linux-2.6.13/drivers/pnp/pnpbios/rsparser.c 2005-07-10 01:05:27.000000000 -0400 @@ -64,7 +64,7 @@ } res->irq_resource[i].start = res->irq_resource[i].end = (unsigned long) irq; - pcibios_penalize_isa_irq(irq); + pcibios_penalize_isa_irq(irq, 1); } } Index: linux-2.6.13/drivers/pnp/resource.c =================================================================== --- linux-2.6.13.orig/drivers/pnp/resource.c 2005-07-10 01:01:36.000000000 -0400 +++ linux-2.6.13/drivers/pnp/resource.c 2005-07-10 01:05:27.000000000 -0400 @@ -102,7 +102,7 @@ for (i = 0; i < 16; i++) if (test_bit(i, data->map)) - pcibios_penalize_isa_irq(i); + pcibios_penalize_isa_irq(i, 0); } #endif return 0; Index: linux-2.6.13/include/asm-alpha/pci.h =================================================================== --- linux-2.6.13.orig/include/asm-alpha/pci.h 2005-07-10 01:01:47.000000000 -0400 +++ linux-2.6.13/include/asm-alpha/pci.h 2005-07-10 01:05:27.000000000 -0400 @@ -58,7 +58,7 @@ extern void pcibios_set_master(struct pci_dev *dev); -extern inline void pcibios_penalize_isa_irq(int irq) +extern inline void pcibios_penalize_isa_irq(int irq, int active) { /* We don't do dynamic PCI IRQ allocation */ } Index: linux-2.6.13/include/asm-arm/pci.h =================================================================== --- linux-2.6.13.orig/include/asm-arm/pci.h 2005-07-10 01:01:48.000000000 -0400 +++ linux-2.6.13/include/asm-arm/pci.h 2005-07-10 01:05:27.000000000 -0400 @@ -14,7 +14,7 @@ /* No special bus mastering setup handling */ } -static inline void pcibios_penalize_isa_irq(int irq) +static inline void pcibios_penalize_isa_irq(int irq, int active) { /* We don't do dynamic PCI IRQ allocation */ } Index: linux-2.6.13/include/asm-h8300/pci.h =================================================================== --- linux-2.6.13.orig/include/asm-h8300/pci.h 2005-07-10 01:01:35.000000000 -0400 +++ linux-2.6.13/include/asm-h8300/pci.h 2005-07-10 01:05:27.000000000 -0400 @@ -15,7 +15,7 @@ /* No special bus mastering setup handling */ } -extern inline void pcibios_penalize_isa_irq(int irq) +extern inline void pcibios_penalize_isa_irq(int irq, int active) { /* We don't do dynamic PCI IRQ allocation */ } Index: linux-2.6.13/include/asm-i386/pci.h =================================================================== --- linux-2.6.13.orig/include/asm-i386/pci.h 2005-07-10 01:01:34.000000000 -0400 +++ linux-2.6.13/include/asm-i386/pci.h 2005-07-10 01:05:27.000000000 -0400 @@ -27,7 +27,7 @@ struct pci_bus * pcibios_scan_root(int bus); void pcibios_set_master(struct pci_dev *dev); -void pcibios_penalize_isa_irq(int irq); +void pcibios_penalize_isa_irq(int irq, int active); struct irq_routing_table *pcibios_get_irq_routing_table(void); int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq); Index: linux-2.6.13/include/asm-ia64/pci.h =================================================================== --- linux-2.6.13.orig/include/asm-ia64/pci.h 2005-07-10 01:01:46.000000000 -0400 +++ linux-2.6.13/include/asm-ia64/pci.h 2005-07-10 01:05:27.000000000 -0400 @@ -47,7 +47,7 @@ } static inline void -pcibios_penalize_isa_irq (int irq) +pcibios_penalize_isa_irq (int irq, int active) { /* We don't do dynamic PCI IRQ allocation */ } Index: linux-2.6.13/include/asm-m68k/pci.h =================================================================== --- linux-2.6.13.orig/include/asm-m68k/pci.h 2005-07-10 01:01:35.000000000 -0400 +++ linux-2.6.13/include/asm-m68k/pci.h 2005-07-10 01:05:27.000000000 -0400 @@ -43,7 +43,7 @@ /* No special bus mastering setup handling */ } -static inline void pcibios_penalize_isa_irq(int irq) +static inline void pcibios_penalize_isa_irq(int irq, int active) { /* We don't do dynamic PCI IRQ allocation */ } Index: linux-2.6.13/include/asm-mips/pci.h =================================================================== --- linux-2.6.13.orig/include/asm-mips/pci.h 2005-07-10 01:01:38.000000000 -0400 +++ linux-2.6.13/include/asm-mips/pci.h 2005-07-10 01:05:27.000000000 -0400 @@ -69,7 +69,7 @@ extern void pcibios_set_master(struct pci_dev *dev); -static inline void pcibios_penalize_isa_irq(int irq) +static inline void pcibios_penalize_isa_irq(int irq, int active) { /* We don't do dynamic PCI IRQ allocation */ } Index: linux-2.6.13/include/asm-ppc/pci.h =================================================================== --- linux-2.6.13.orig/include/asm-ppc/pci.h 2005-07-10 01:01:39.000000000 -0400 +++ linux-2.6.13/include/asm-ppc/pci.h 2005-07-10 01:05:27.000000000 -0400 @@ -37,7 +37,7 @@ /* No special bus mastering setup handling */ } -extern inline void pcibios_penalize_isa_irq(int irq) +extern inline void pcibios_penalize_isa_irq(int irq, int active) { /* We don't do dynamic PCI IRQ allocation */ } Index: linux-2.6.13/include/asm-ppc64/pci.h =================================================================== --- linux-2.6.13.orig/include/asm-ppc64/pci.h 2005-07-10 01:01:34.000000000 -0400 +++ linux-2.6.13/include/asm-ppc64/pci.h 2005-07-10 01:05:27.000000000 -0400 @@ -37,7 +37,7 @@ /* No special bus mastering setup handling */ } -static inline void pcibios_penalize_isa_irq(int irq) +static inline void pcibios_penalize_isa_irq(int irq, int active) { /* We don't do dynamic PCI IRQ allocation */ } Index: linux-2.6.13/include/asm-sh/pci.h =================================================================== --- linux-2.6.13.orig/include/asm-sh/pci.h 2005-07-10 01:01:38.000000000 -0400 +++ linux-2.6.13/include/asm-sh/pci.h 2005-07-10 01:05:27.000000000 -0400 @@ -36,7 +36,7 @@ extern void pcibios_set_master(struct pci_dev *dev); -static inline void pcibios_penalize_isa_irq(int irq) +static inline void pcibios_penalize_isa_irq(int irq, int active) { /* We don't do dynamic PCI IRQ allocation */ } Index: linux-2.6.13/include/asm-sh64/pci.h =================================================================== --- linux-2.6.13.orig/include/asm-sh64/pci.h 2005-07-10 01:01:47.000000000 -0400 +++ linux-2.6.13/include/asm-sh64/pci.h 2005-07-10 01:05:27.000000000 -0400 @@ -26,7 +26,7 @@ /* * Set penalize isa irq function */ -static inline void pcibios_penalize_isa_irq(int irq) +static inline void pcibios_penalize_isa_irq(int irq, int active) { /* We don't do dynamic PCI IRQ allocation */ } Index: linux-2.6.13/include/asm-sparc/pci.h =================================================================== --- linux-2.6.13.orig/include/asm-sparc/pci.h 2005-07-10 01:01:39.000000000 -0400 +++ linux-2.6.13/include/asm-sparc/pci.h 2005-07-10 01:05:27.000000000 -0400 @@ -20,7 +20,7 @@ /* No special bus mastering setup handling */ } -extern inline void pcibios_penalize_isa_irq(int irq) +extern inline void pcibios_penalize_isa_irq(int irq, int active) { /* We don't do dynamic PCI IRQ allocation */ } Index: linux-2.6.13/include/asm-sparc64/pci.h =================================================================== --- linux-2.6.13.orig/include/asm-sparc64/pci.h 2005-07-10 01:01:47.000000000 -0400 +++ linux-2.6.13/include/asm-sparc64/pci.h 2005-07-10 01:05:27.000000000 -0400 @@ -23,7 +23,7 @@ /* No special bus mastering setup handling */ } -static inline void pcibios_penalize_isa_irq(int irq) +static inline void pcibios_penalize_isa_irq(int irq, int active) { /* We don't do dynamic PCI IRQ allocation */ } Index: linux-2.6.13/include/asm-x86_64/pci.h =================================================================== --- linux-2.6.13.orig/include/asm-x86_64/pci.h 2005-07-10 01:01:34.000000000 -0400 +++ linux-2.6.13/include/asm-x86_64/pci.h 2005-07-10 01:05:27.000000000 -0400 @@ -33,7 +33,7 @@ extern int (*pci_config_write)(int seg, int bus, int dev, int fn, int reg, int len, u32 value); void pcibios_set_master(struct pci_dev *dev); -void pcibios_penalize_isa_irq(int irq); +void pcibios_penalize_isa_irq(int irq, int active); struct irq_routing_table *pcibios_get_irq_routing_table(void); int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq); Index: linux-2.6.13/include/linux/acpi.h =================================================================== --- linux-2.6.13.orig/include/linux/acpi.h 2005-07-10 01:05:18.000000000 -0400 +++ linux-2.6.13/include/linux/acpi.h 2005-07-10 01:05:27.000000000 -0400 @@ -478,7 +478,7 @@ struct pci_dev; int acpi_pci_irq_enable (struct pci_dev *dev); -void acpi_penalize_isa_irq(int irq); +void acpi_penalize_isa_irq(int irq, int active); #ifdef CONFIG_ACPI_DEALLOCATE_IRQ void acpi_pci_irq_disable (struct pci_dev *dev);