The PXB device exposes a new pci root bridge with the fw path: /pci-root@4/..., in which 4 is the root bus number. Before this patch the fw path was wrongly computed: /pci-root@1/pci@i0cf8/... Fix the above issues: Correct the bus number and remove the extra host bridge description.
Signed-off-by: Marcel Apfelbaum marcel@redhat.com --- Laszlo worked on supporting pxb for OVMF and discovered that there is a problem when booting devices from a PXB.
This is a link to the latest QEMU series: https://www.mail-archive.com/qemu-devel@nongnu.org/msg302493.html
Thanks, Marcel
src/boot.c | 1 - src/hw/pci.c | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/boot.c b/src/boot.c index ec59c37..a3bb13b 100644 --- a/src/boot.c +++ b/src/boot.c @@ -114,7 +114,6 @@ build_pci_path(char *buf, int max, const char *devname, struct pci_device *pci) } else { if (pci->rootbus) p += snprintf(p, max, "/pci-root@%x", pci->rootbus); - p += snprintf(p, buf+max-p, "%s", FW_PCI_DOMAIN); }
int dev = pci_bdf_to_dev(pci->bdf), fn = pci_bdf_to_fn(pci->bdf); diff --git a/src/hw/pci.c b/src/hw/pci.c index 0379b55..9e77af4 100644 --- a/src/hw/pci.c +++ b/src/hw/pci.c @@ -133,7 +133,7 @@ pci_probe_devices(void) if (bus != lastbus) rootbuses++; lastbus = bus; - rootbus = rootbuses; + rootbus = bus; if (bus > MaxPCIBus) MaxPCIBus = bus; } else {