summaryrefslogtreecommitdiff
path: root/hw/pci/pci.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/pci/pci.c')
-rw-r--r--hw/pci/pci.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 2f2db0f8df..e0995aa950 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -249,15 +249,18 @@ static void pci_host_bus_register(int domain, PCIBus *bus)
PCIBus *pci_find_primary_bus(void)
{
+ PCIBus *primary_bus = NULL;
struct PCIHostBus *host;
QLIST_FOREACH(host, &host_buses, next) {
- if (host->domain == 0) {
- return host->bus;
+ if (primary_bus) {
+ /* We have multiple root buses, refuse to select a primary */
+ return NULL;
}
+ primary_bus = host->bus;
}
- return NULL;
+ return primary_bus;
}
PCIBus *pci_device_root_bus(const PCIDevice *d)