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) |
