On Fri, Jun 19, 2015 at 04:40:17AM +0200, Laszlo Ersek wrote: > We have agreed that OpenFirmware device paths in the "bootorder" fw_cfg > file should follow the pattern > > /pci@i0cf8,%x/... > > for devices that live behind an extra root bus. The extra root bus in > question is the %x'th among the extra root buses. (In other words, %x > gives the position of the affected extra root bus relative to the other > extra root buses, in bus_nr order.) %x starts at 1, and is formatted in > hex. > > The portion of the unit address that comes before the comma is dynamically > taken from the main host bridge, similarly to sysbus_get_fw_dev_path(). > > Cc: Kevin O'Connor <ke...@koconnor.net> > Cc: Michael S. Tsirkin <m...@redhat.com> > Cc: Marcel Apfelbaum <mar...@redhat.com> > Signed-off-by: Laszlo Ersek <ler...@redhat.com> > --- > > Notes: > v7: > - implement the format that both Kevin and Michael agreed with. Example: > /pci@i0cf8,1/pci-bridge@0/scsi@0/channel@0/disk@0,0 > - I updated the OVMF patchset accordingly, but I won't post it until > this QEMU patch is applied > - Someone please write the SeaBIOS patch
The associated SeaBIOS patch is below. Does anyone have a qemu command line handy to test with the PXB bus? -Kevin --- a/src/boot.c +++ b/src/boot.c @@ -112,9 +112,9 @@ build_pci_path(char *buf, int max, const char *devname, struct pci_device *pci) if (pci->parent) { p = build_pci_path(p, max, "pci-bridge", pci->parent); } else { - if (pci->rootbus) - p += snprintf(p, max, "/pci-root@%x", pci->rootbus); p += snprintf(p, buf+max-p, "%s", FW_PCI_DOMAIN); + if (pci->rootbus) + p += snprintf(p, buf+max-p, ",%x", pci->rootbus); } int dev = pci_bdf_to_dev(pci->bdf), fn = pci_bdf_to_fn(pci->bdf);