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 78ca1ecbb907..766b104ac1a1 100644 --- a/arch/i386/pci/irq.c +++ b/arch/i386/pci/irq.c | |||
@@ -1051,24 +1051,28 @@ static int __init pcibios_irq_init(void) | |||
1051 | subsys_initcall(pcibios_irq_init); | 1051 | subsys_initcall(pcibios_irq_init); |
1052 | 1052 | ||
1053 | 1053 | ||
1054 | static void pirq_penalize_isa_irq(int irq) | 1054 | static void pirq_penalize_isa_irq(int irq, int active) |
1055 | { | 1055 | { |
1056 | /* | 1056 | /* |
1057 | * If any ISAPnP device reports an IRQ in its list of possible | 1057 | * If any ISAPnP device reports an IRQ in its list of possible |
1058 | * IRQ's, we try to avoid assigning it to PCI devices. | 1058 | * IRQ's, we try to avoid assigning it to PCI devices. |
1059 | */ | 1059 | */ |
1060 | if (irq < 16) | 1060 | if (irq < 16) { |
1061 | pirq_penalty[irq] += 100; | 1061 | if (active) |
1062 | pirq_penalty[irq] += 1000; | ||
1063 | else | ||
1064 | pirq_penalty[irq] += 100; | ||
1065 | } | ||
1062 | } | 1066 | } |
1063 | 1067 | ||
1064 | void pcibios_penalize_isa_irq(int irq) | 1068 | void pcibios_penalize_isa_irq(int irq, int active) |
1065 | { | 1069 | { |
1066 | #ifdef CONFIG_ACPI_PCI | 1070 | #ifdef CONFIG_ACPI_PCI |
1067 | if (!acpi_noirq) | 1071 | if (!acpi_noirq) |
1068 | acpi_penalize_isa_irq(irq); | 1072 | acpi_penalize_isa_irq(irq, active); |
1069 | else | 1073 | else |
1070 | #endif | 1074 | #endif |
1071 | pirq_penalize_isa_irq(irq); | 1075 | pirq_penalize_isa_irq(irq, active); |
1072 | } | 1076 | } |
1073 | 1077 | ||
1074 | static int pirq_enable_irq(struct pci_dev *dev) | 1078 | static int pirq_enable_irq(struct pci_dev *dev) |