summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2011-09-19 17:44:50 +0000
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2011-09-20 15:53:24 +1000
commit781fb7a3e4cdca28236ae23e2c77070ed3ae531f (patch)
tree04997ffc3e98b34b5566ec9b0244fd394e6bce10
parentfb82b83970a32263698e54a8779d2ce88cd3b060 (diff)
downloadop-kernel-dev-781fb7a3e4cdca28236ae23e2c77070ed3ae531f.zip
op-kernel-dev-781fb7a3e4cdca28236ae23e2c77070ed3ae531f.tar.gz
powerpc/pci: Call pcie_bus_configure_settings()
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>
-rw-r--r--arch/powerpc/kernel/pci-common.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index 32656f1..1bd47f3 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -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)
OpenPOWER on IntegriCloud