From patchwork Mon Aug 1 06:51:02 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Correctly assign PCI domain numbers From: David Gibson X-Patchwork-Id: 107681 Message-Id: <1312181462-29889-1-git-send-email-david@gibson.dropbear.id.au> To: qemu-devel@nongnu.org Cc: qemu-trivial@nongnu.org Date: Mon, 1 Aug 2011 16:51:02 +1000 qemu already almost supports PCI domains; that is, several entirely independent PCI host bridges on the same machine. However, a bug in pci_bus_new_inplace() means that every host bridge gets assigned domain number zero and so can't be properly distinguished. This patch fixes the bug, giving each new host bridge a new domain number. Signed-off-by: David Gibson --- hw/pci.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/hw/pci.c b/hw/pci.c index 36db58b..2b4aecb 100644 --- a/hw/pci.c +++ b/hw/pci.c @@ -262,6 +262,8 @@ int pci_find_domain(const PCIBus *bus) return -1; } +static int pci_next_domain; /* = 0 */ + void pci_bus_new_inplace(PCIBus *bus, DeviceState *parent, const char *name, MemoryRegion *address_space, @@ -274,7 +276,8 @@ void pci_bus_new_inplace(PCIBus *bus, DeviceState *parent, /* host bridge */ QLIST_INIT(&bus->child); - pci_host_bus_register(0, bus); /* for now only pci domain 0 is supported */ + + pci_host_bus_register(pci_next_domain++, bus); vmstate_register(NULL, -1, &vmstate_pcibus, bus); }