powerpc/pci: Call pcie_bus_configure_settings()
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Mon, 19 Sep 2011 17:44:50 +0000 (17:44 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 20 Sep 2011 05:53:24 +0000 (15:53 +1000)
This new function is used to properly setup the PCI Express Max Payload Size
(and in some circumstances Max Read Request Size).

Some systems will not operate properly if these aren't set correctly and
the firmware doesn't always do it.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/kernel/pci-common.c

index 32656f105250a4d6b44af65a47688aa1a1f7e687..1bd47f36b25f84f2442ca1d4ba7e10717d61eefa 100644 (file)
@@ -1730,6 +1730,17 @@ void __devinit pcibios_scan_phb(struct pci_controller *hose)
 
        if (mode == PCI_PROBE_NORMAL)
                hose->last_busno = bus->subordinate = pci_scan_child_bus(bus);
+
+       /* Configure PCI Express settings */
+       if (bus) {
+               struct pci_bus *child;
+               list_for_each_entry(child, &bus->children, node) {
+                       struct pci_dev *self = child->self;
+                       if (!self)
+                               continue;
+                       pcie_bus_configure_settings(child, self->pcie_mpss);
+               }
+       }
 }
 
 static void fixup_hide_host_resource_fsl(struct pci_dev *dev)