aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2007-12-19 23:10:02 -0500
committerPaul Mackerras <paulus@samba.org>2007-12-20 00:18:17 -0500
commit54a24cbbd0184faffc37c39cd3a896f4ddac3e03 (patch)
tree4ff7a745643406883ba87ee4aa4f527040c6bf71 /arch/powerpc
parent553aa7659bc0e188348f64e978343ed984eb6e56 (diff)
[POWERPC] Fix PCI IRQ fallback code to not map IRQ 0
The PCI IRQ code has a fallback when the device-tree parsing fails, that tries to map the interrupt indicated by PCI_INTERRUPT_LINE if the firmware set something in there. This is a bit fragile but has proven useful in some cases so far. However, it's causing us to incorrectly try to map interrupt 0 on various setups, so let's prevent that case, as none of the cases where the fallback is legit should have an IRQ 0. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/kernel/pci-common.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index 88838b0f8b90..571854f2906c 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -225,10 +225,11 @@ int pci_read_irq_line(struct pci_dev *pci_dev)
225 if (pin == 0) 225 if (pin == 0)
226 return -1; 226 return -1;
227 if (pci_read_config_byte(pci_dev, PCI_INTERRUPT_LINE, &line) || 227 if (pci_read_config_byte(pci_dev, PCI_INTERRUPT_LINE, &line) ||
228 line == 0xff) { 228 line == 0xff || line == 0) {
229 return -1; 229 return -1;
230 } 230 }
231 DBG(" -> no map ! Using irq line %d from PCI config\n", line); 231 DBG(" -> no map ! Using line %d (pin %d) from PCI config\n",
232 line, pin);
232 233
233 virq = irq_create_mapping(NULL, line); 234 virq = irq_create_mapping(NULL, line);
234 if (virq != NO_IRQ) 235 if (virq != NO_IRQ)