Commit 54a24cbb authored by Benjamin Herrenschmidt's avatar Benjamin Herrenschmidt Committed by Paul Mackerras

[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: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 553aa765
...@@ -225,10 +225,11 @@ int pci_read_irq_line(struct pci_dev *pci_dev) ...@@ -225,10 +225,11 @@ int pci_read_irq_line(struct pci_dev *pci_dev)
if (pin == 0) if (pin == 0)
return -1; return -1;
if (pci_read_config_byte(pci_dev, PCI_INTERRUPT_LINE, &line) || if (pci_read_config_byte(pci_dev, PCI_INTERRUPT_LINE, &line) ||
line == 0xff) { line == 0xff || line == 0) {
return -1; return -1;
} }
DBG(" -> no map ! Using irq line %d from PCI config\n", line); DBG(" -> no map ! Using line %d (pin %d) from PCI config\n",
line, pin);
virq = irq_create_mapping(NULL, line); virq = irq_create_mapping(NULL, line);
if (virq != NO_IRQ) if (virq != NO_IRQ)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment