Anton,

Can you try this patch and see if it resolves the issue for you.. (You'll
still get the Apple FW messages)

- k

diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
index 4005739..bf13c21 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -133,22 +133,23 @@ void fsl_pcibios_fixup_bus(struct pci_bus *bus)
        struct pci_controller *hose = (struct pci_controller *) bus->sysdata;
        int i;

-       /* deal with bogus pci_bus when we don't have anything connected on 
PCIe */
-       if (hose->indirect_type & PPC_INDIRECT_TYPE_NO_PCIE_LINK) {
-               if (bus->parent) {
-                       for (i = 0; i < 4; ++i)
-                               bus->resource[i] = bus->parent->resource[i];
-               }
-       }
-
-       if (fsl_pcie_bus_fixup &&
-           (bus->parent == hose->bus) &&
-            early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP)) {
+       if ((bus->parent == hose->bus) &&
+           ((fsl_pcie_bus_fixup &&
+             early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP)) ||
+            (hose->indirect_type & PPC_INDIRECT_TYPE_NO_PCIE_LINK)))
+       {
                for (i = 0; i < 4; ++i) {
-                       if (bus->resource[i] && bus->parent->resource[i]) {
-                               bus->resource[i]->start = 
bus->parent->resource[i]->start;
-                               bus->resource[i]->end = 
bus->parent->resource[i]->end;
-                               bus->resource[i]->flags = 
bus->parent->resource[i]->flags;
+                       struct resource *res = bus->resource[i];
+                       struct resource *par = bus->parent->resource[i];
+                       if (res) {
+                               res->start = 0;
+                               res->end   = 0;
+                               res->flags = 0;
+                       }
+                       if (res && par) {
+                               res->start = par->start;
+                               res->end   = par->end;
+                               res->flags = par->flags;
                        }
                }
        }
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to