Signed-off-by: Stephen Rothwell <[EMAIL PROTECTED]>
---
 arch/powerpc/platforms/iseries/pci.c |   68 +++++++++++++++++----------------
 1 files changed, 35 insertions(+), 33 deletions(-)

diff --git a/arch/powerpc/platforms/iseries/pci.c 
b/arch/powerpc/platforms/iseries/pci.c
index cff832a..8e2ac3d 100644
--- a/arch/powerpc/platforms/iseries/pci.c
+++ b/arch/powerpc/platforms/iseries/pci.c
@@ -177,47 +177,49 @@ void __init iSeries_pci_final_fixup(void)
 
        printk("pcibios_final_fixup\n");
        for_each_pci_dev(pdev) {
+               struct pci_dn *pdn;
+               const u32 *agent;
+
                node = find_device_node(pdev->bus->number, pdev->devfn);
                printk("pci dev %p (%x.%x), node %p\n", pdev,
                       pdev->bus->number, pdev->devfn, node);
+               if (!node) {
+                       printk("PCI: Device Tree not found for 0x%016lX\n",
+                                       (unsigned long)pdev);
+                       continue;
+               }
 
-               if (node != NULL) {
-                       struct pci_dn *pdn = PCI_DN(node);
-                       const u32 *agent;
-
-                       agent = of_get_property(node, "linux,agent-id", NULL);
-                       if ((pdn != NULL) && (agent != NULL)) {
-                               u8 irq = iSeries_allocate_IRQ(pdn->busno, 0,
-                                               pdn->bussubno);
-                               int err;
-
-                               err = HvCallXm_connectBusUnit(pdn->busno, 
pdn->bussubno,
-                                               *agent, irq);
+               pdn = PCI_DN(node);
+               agent = of_get_property(node, "linux,agent-id", NULL);
+               if (pdn && agent) {
+                       u8 irq = iSeries_allocate_IRQ(pdn->busno, 0,
+                                       pdn->bussubno);
+                       int err;
+
+                       err = HvCallXm_connectBusUnit(pdn->busno, pdn->bussubno,
+                                       *agent, irq);
+                       if (err)
+                               pci_log_error("Connect Bus Unit",
+                                       pdn->busno, pdn->bussubno, *agent, err);
+                       else {
+                               err = HvCallPci_configStore8(pdn->busno,
+                                       pdn->bussubno, *agent,
+                                       PCI_INTERRUPT_LINE, irq);
                                if (err)
-                                       pci_log_error("Connect Bus Unit",
-                                               pdn->busno, pdn->bussubno, 
*agent, err);
-                               else {
-                                       err = 
HvCallPci_configStore8(pdn->busno, pdn->bussubno,
-                                                       *agent,
-                                                       PCI_INTERRUPT_LINE,
-                                                       irq);
-                                       if (err)
-                                               pci_log_error("PciCfgStore Irq 
Failed!",
-                                                       pdn->busno, 
pdn->bussubno, *agent, err);
-                               }
-                               if (!err)
+                                       pci_log_error("PciCfgStore Irq Failed!",
+                                               pdn->busno, pdn->bussubno,
+                                               *agent, err);
+                               else
                                        pdev->irq = irq;
                        }
+               }
 
-                       ++num_dev;
-                       pdev->sysdata = node;
-                       PCI_DN(node)->pcidev = pdev;
-                       allocate_device_bars(pdev);
-                       iSeries_Device_Information(pdev, num_dev);
-                       iommu_devnode_init_iSeries(pdev, node);
-               } else
-                       printk("PCI: Device Tree not found for 0x%016lX\n",
-                                       (unsigned long)pdev);
+               num_dev++;
+               pdev->sysdata = node;
+               PCI_DN(node)->pcidev = pdev;
+               allocate_device_bars(pdev);
+               iSeries_Device_Information(pdev, num_dev);
+               iommu_devnode_init_iSeries(pdev, node);
        }
        iSeries_activate_IRQs();
        mf_display_src(0xC9000200);
-- 
1.5.3.7


-- 
Cheers,
Stephen Rothwell                    [EMAIL PROTECTED]
http://www.canb.auug.org.au/~sfr/
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to