summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDuc Dang <dhdang@apm.com>2014-11-07 02:14:18 +0100
committerBjorn Helgaas <bhelgaas@google.com>2014-11-13 17:53:30 +0100
commit336b5be2c56f3cf2252f5a39d344ef67cf9bdf7a (patch)
tree8b0dfc4bd5d4a5009fa9ae04629ba6e0a71a1879
parentPCI: Don't oops on virtual buses in acpi_pci_get_bridge_handle() (diff)
downloadlinux-336b5be2c56f3cf2252f5a39d344ef67cf9bdf7a.tar.xz
linux-336b5be2c56f3cf2252f5a39d344ef67cf9bdf7a.zip
PCI: xgene: Assign resources to bus before adding new devices
The X-Gene PCIe driver assumes pci_scan_root_bus() assigns resources as proposed in [1]. But we dropped patch [1] because it would break some architectures, which means the X-Gene PCIe driver is currently broken. Add calls to scan the bus, assign resources, and add devices in the X-Gene driver to fix this. [bhelgaas: changelog] [1] http://lkml.kernel.org/r/1412000971-9242-11-git-send-email-Liviu.Dudau@arm.com Signed-off-by: Duc Dang <dhdang@apm.com> Signed-off-by: Tanmay Inamdar <tinamdar@apm.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
-rw-r--r--drivers/pci/host/pci-xgene.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/pci/host/pci-xgene.c b/drivers/pci/host/pci-xgene.c
index 9ecabfa8c634..2988fe136c1e 100644
--- a/drivers/pci/host/pci-xgene.c
+++ b/drivers/pci/host/pci-xgene.c
@@ -631,10 +631,15 @@ static int xgene_pcie_probe_bridge(struct platform_device *pdev)
if (ret)
return ret;
- bus = pci_scan_root_bus(&pdev->dev, 0, &xgene_pcie_ops, port, &res);
+ bus = pci_create_root_bus(&pdev->dev, 0,
+ &xgene_pcie_ops, port, &res);
if (!bus)
return -ENOMEM;
+ pci_scan_child_bus(bus);
+ pci_assign_unassigned_bus_resources(bus);
+ pci_bus_add_devices(bus);
+
platform_set_drvdata(pdev, port);
return 0;
}