summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorMurali Karicheri <m-karicheri2@ti.com>2015-07-22 00:35:19 +0300
committerBjorn Helgaas <bhelgaas@google.com>2015-07-23 17:53:19 +0300
commit808b27a5ae05e8828b9f6262af5b9dfae5f661d0 (patch)
treeed468d779a18b4ee6e957202ec155f68a6dc825c /arch
parentbc0195aad0daa2ad5b0d76cce22b167bc3435590 (diff)
downloadlinux-808b27a5ae05e8828b9f6262af5b9dfae5f661d0.tar.xz
ARM/PCI: Set MPS before pci_bus_add_devices()
The MPS configuration should be done *before* pci_bus_add_devices(). After pci_bus_add_devices(), drivers may be bound to devices, and the PCI core shouldn't touch device configuration while a driver owns the device. [bhelgaas: remove check for bus being non-NULL] Reported-by: Bjorn Helgaas <bhelgaas@google.com> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/kernel/bios32.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c
index fcbbbb1b9e95..bf370bc01c48 100644
--- a/arch/arm/kernel/bios32.c
+++ b/arch/arm/kernel/bios32.c
@@ -521,6 +521,8 @@ void pci_common_init_dev(struct device *parent, struct hw_pci *hw)
struct pci_bus *bus = sys->bus;
if (!pci_has_flag(PCI_PROBE_ONLY)) {
+ struct pci_bus *child;
+
/*
* Size the bridge windows.
*/
@@ -530,25 +532,15 @@ void pci_common_init_dev(struct device *parent, struct hw_pci *hw)
* Assign resources.
*/
pci_bus_assign_resources(bus);
- }
+ list_for_each_entry(child, &bus->children, node)
+ pcie_bus_configure_settings(child);
+ }
/*
* Tell drivers about devices found.
*/
pci_bus_add_devices(bus);
}
-
- list_for_each_entry(sys, &head, node) {
- struct pci_bus *bus = sys->bus;
-
- /* Configure PCI Express settings */
- if (bus && !pci_has_flag(PCI_PROBE_ONLY)) {
- struct pci_bus *child;
-
- list_for_each_entry(child, &bus->children, node)
- pcie_bus_configure_settings(child);
- }
- }
}
#ifndef CONFIG_PCI_HOST_ITE8152