[SeaBIOS] [PATCH v7 10/10] hw/pci-bridge: format special OFW unit address for PXB host
Kevin O'Connor
kevin at koconnor.net
Wed Jun 24 19:11:12 CEST 2015
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 at 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 <kevin at koconnor.net>
> Cc: Michael S. Tsirkin <mst at redhat.com>
> Cc: Marcel Apfelbaum <marcel at redhat.com>
> Signed-off-by: Laszlo Ersek <lersek at redhat.com>
> ---
>
> Notes:
> v7:
> - implement the format that both Kevin and Michael agreed with. Example:
> /pci at i0cf8,1/pci-bridge at 0/scsi at 0/channel at 0/disk at 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);
More information about the SeaBIOS
mailing list