diff options
Diffstat (limited to 'arch/i386/pci/irq.c')
-rw-r--r-- | arch/i386/pci/irq.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/arch/i386/pci/irq.c b/arch/i386/pci/irq.c index da21b1d07c15..d21b3a2dc978 100644 --- a/arch/i386/pci/irq.c +++ b/arch/i386/pci/irq.c | |||
@@ -1006,24 +1006,28 @@ static int __init pcibios_irq_init(void) | |||
1006 | subsys_initcall(pcibios_irq_init); | 1006 | subsys_initcall(pcibios_irq_init); |
1007 | 1007 | ||
1008 | 1008 | ||
1009 | static void pirq_penalize_isa_irq(int irq) | 1009 | static void pirq_penalize_isa_irq(int irq, int active) |
1010 | { | 1010 | { |
1011 | /* | 1011 | /* |
1012 | * If any ISAPnP device reports an IRQ in its list of possible | 1012 | * If any ISAPnP device reports an IRQ in its list of possible |
1013 | * IRQ's, we try to avoid assigning it to PCI devices. | 1013 | * IRQ's, we try to avoid assigning it to PCI devices. |
1014 | */ | 1014 | */ |
1015 | if (irq < 16) | 1015 | if (irq < 16) { |
1016 | pirq_penalty[irq] += 100; | 1016 | if (active) |
1017 | pirq_penalty[irq] += 1000; | ||
1018 | else | ||
1019 | pirq_penalty[irq] += 100; | ||
1020 | } | ||
1017 | } | 1021 | } |
1018 | 1022 | ||
1019 | void pcibios_penalize_isa_irq(int irq) | 1023 | void pcibios_penalize_isa_irq(int irq, int active) |
1020 | { | 1024 | { |
1021 | #ifdef CONFIG_ACPI_PCI | 1025 | #ifdef CONFIG_ACPI_PCI |
1022 | if (!acpi_noirq) | 1026 | if (!acpi_noirq) |
1023 | acpi_penalize_isa_irq(irq); | 1027 | acpi_penalize_isa_irq(irq, active); |
1024 | else | 1028 | else |
1025 | #endif | 1029 | #endif |
1026 | pirq_penalize_isa_irq(irq); | 1030 | pirq_penalize_isa_irq(irq, active); |
1027 | } | 1031 | } |
1028 | 1032 | ||
1029 | static int pirq_enable_irq(struct pci_dev *dev) | 1033 | static int pirq_enable_irq(struct pci_dev *dev) |