MIPS/PCI: Call pcie_bus_configure_settings() to set MPS/MRRS
authorHuacai Chen <chenhc@lemote.com>
Sat, 15 Sep 2018 06:01:12 +0000 (14:01 +0800)
committerPaul Burton <paul.burton@mips.com>
Tue, 18 Sep 2018 22:56:48 +0000 (15:56 -0700)
Call pcie_bus_configure_settings() on MIPS, like for other platforms.
The function pcie_bus_configure_settings() makes sure the MPS (Max
Payload Size) across the bus is uniform and provides the ability to
tune the MRSS (Max Read Request Size) and MPS (Max Payload Size) to
higher performance values. Some devices will not operate properly if
these aren't set correctly because the firmware doesn't always do it.

Signed-off-by: Huacai Chen <chenhc@lemote.com>
Signed-off-by: Paul Burton <paul.burton@mips.com>
Patchwork: https://patchwork.linux-mips.org/patch/20649/
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: James Hogan <jhogan@kernel.org>
Cc: linux-mips@linux-mips.org
Cc: Fuxin Zhang <zhangfx@lemote.com>
Cc: Zhangjin Wu <wuzhangjin@gmail.com>
Cc: Huacai Chen <chenhuacai@gmail.com>
arch/mips/pci/pci-legacy.c

index f1e92bf743c27df2812c338be0220dbb27b1f83f..3c3b1e6abb53562fd0508d7ac25ddb0b09891525 100644 (file)
@@ -127,8 +127,12 @@ static void pcibios_scanbus(struct pci_controller *hose)
        if (pci_has_flag(PCI_PROBE_ONLY)) {
                pci_bus_claim_resources(bus);
        } else {
+               struct pci_bus *child;
+
                pci_bus_size_bridges(bus);
                pci_bus_assign_resources(bus);
+               list_for_each_entry(child, &bus->children, node)
+                       pcie_bus_configure_settings(child);
        }
        pci_bus_add_devices(bus);
 }