diff options
Diffstat (limited to 'hw/pci/pci.c')
-rw-r--r-- | hw/pci/pci.c | 9 |
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) |