aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAdhemerval Zanella <azanella@linux.vnet.ibm.com>2008-11-18 22:55:35 -0500
committerPaul Mackerras <paulus@samba.org>2008-11-30 17:40:18 -0500
commit4b824de9b18b8d1013e9fc9e4b0f855ced8cac2c (patch)
tree8f09d7d8d9dd534e2987146fe39ec49537bf1a39 /arch
parent3f9b5d4dda6d85aab33fef32e8351ddc34c81fb4 (diff)
powerpc: Fix IRQ assignment for some PCIe devices
Currently, some PCIe devices on POWER6 machines do not get interrupts assigned correctly. The problem is that OF doesn't create an "interrupt" property for them. The fix is for of_irq_map_pci to fall back to using the value in the PCI interrupt-pin register in config space, as we do when there is no OF device-tree node for the device. I have verified that this works fine with a pair of Squib-E SAS adapter on a P6-570. Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/kernel/prom_parse.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/prom_parse.c b/arch/powerpc/kernel/prom_parse.c
index bc1fb27368af..a11d68976dc8 100644
--- a/arch/powerpc/kernel/prom_parse.c
+++ b/arch/powerpc/kernel/prom_parse.c
@@ -250,8 +250,11 @@ int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq)
250 * parsing 250 * parsing
251 */ 251 */
252 dn = pci_device_to_OF_node(pdev); 252 dn = pci_device_to_OF_node(pdev);
253 if (dn) 253 if (dn) {
254 return of_irq_map_one(dn, 0, out_irq); 254 rc = of_irq_map_one(dn, 0, out_irq);
255 if (!rc)
256 return rc;
257 }
255 258
256 /* Ok, we don't, time to have fun. Let's start by building up an 259 /* Ok, we don't, time to have fun. Let's start by building up an
257 * interrupt spec. we assume #interrupt-cells is 1, which is standard 260 * interrupt spec. we assume #interrupt-cells is 1, which is standard