From 0fe4c9ee7af5f6bb3a1fcbf1d39116a894600c90 Mon Sep 17 00:00:00 2001 From: Marcel Apfelbaum Date: Mon, 16 Feb 2015 19:29:20 +0200 Subject: [PATCH] fw/pci: map memory and IO regions for multiple pci root buses For resource sizing and mapping purposes treat devices on extra root buses as if they are on the default root bus (bus 0). Signed-off-by: Kevin O'Connor Signed-off-by: Marcel Apfelbaum Signed-off-by: Gerd Hoffmann --- src/fw/pciinit.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/fw/pciinit.c b/src/fw/pciinit.c index cc3ef77..ac39d23 100644 --- a/src/fw/pciinit.c +++ b/src/fw/pciinit.c @@ -681,6 +681,11 @@ static int pci_bios_check_devices(struct pci_bus *busses) busses[pci->secondary_bus].bus_dev = pci; struct pci_bus *bus = &busses[pci_bdf_to_bus(pci->bdf)]; + if (!bus->bus_dev) + /* + * Resources for all root busses go in busses[0] + */ + bus = &busses[0]; int i; for (i = 0; i < PCI_NUM_REGIONS; i++) { if ((pci->class == PCI_CLASS_BRIDGE_PCI) && @@ -711,6 +716,11 @@ static int pci_bios_check_devices(struct pci_bus *busses) if (!s->bus_dev) continue; struct pci_bus *parent = &busses[pci_bdf_to_bus(s->bus_dev->bdf)]; + if (!parent->bus_dev) + /* + * Resources for all root busses go in busses[0] + */ + parent = &busses[0]; int type; int hotplug_support = pci_bus_hotplug_support(s); for (type = 0; type < PCI_REGION_TYPE_COUNT; type++) { -- 2.39.5