[SeaBIOS] [RFC v2 0/3] Support multiple pci domains in pci_device

Zihan Yang whois.zihan.yang at gmail.com
Mon Aug 27 04:15:03 CEST 2018


Marcel Apfelbaum <marcel.apfelbaum at gmail.com> 于2018年8月25日周六 下午4:07写道:
>
> Hi,
>
> On 08/09/2018 08:43 AM, Zihan Yang wrote:
> > Currently seabios assumes there is only one pci domain(0), and almost
> > everything operates on pci domain 0 by default. This patch aims to add
> > multiple pci domain support for pci_device, while reserve the original
> > API for compatibility.
>
> This is a necessary addition to support your QEMU patches,
> Please send a link to the QEMU series on your next re-spin.

OK, I will attach the link in later QEMU patches.

> > The reason to get seabios involved is that the pxb-pcie host bus created
> > in QEMU is now in a different PCI domain, and its bus number would start
> > from 0 instead of bus_nr. Actually bus_nr should not be used when in
> > another non-zero domain.
>
> That is not necessarily true. As we discussed in QEMU devel
> mailing list, it is possible PCI buses of a different domain
> to start from a positive bus number.
> Both bus_nr and domain_nr support makes sense.

OK, I think I will still use bus_nr as the start bus when in separate domain.

> >   However, QEMU only binds port 0xcf8 and 0xcfc to
> > bus pcie.0. To avoid bus confliction, we should use other port pairs for
> > busses under new domains.
>
> I would skip support for IO based configuration and use only MMCONFIG
> for extra root buses.
>
> The question remains: how do we assign MMCONFIG space for
> each PCI domain.

Indeed, seabios does not have fixed MMCONFIG space(except for q35 host) yet.

> Thanks,
> Marcel
>
> > Current issues:
> > * when trying to read config space of pcie_pci_bridge, it actually reads
> >    out the result of mch. I'm working on this weird behavior.
> >
> > Changelog:
> > v2 <- v1:
> > - Fix bugs in filtering domains when traversing pci devices
> > - Reformat some hardcoded codes, such as probing the pci device in pci_setup
> >
> > Zihan Yang (3):
> >    fw/pciinit: Recognize pxb-pcie-dev device
> >    pci_device: Add pci domain support
> >    pci: filter undesired domain when traversing pci
> >
> >   src/fw/coreboot.c    |   2 +-
> >   src/fw/csm.c         |   2 +-
> >   src/fw/mptable.c     |   1 +
> >   src/fw/paravirt.c    |   3 +-
> >   src/fw/pciinit.c     | 276 ++++++++++++++++++++++++++++++---------------------
> >   src/hw/ahci.c        |   1 +
> >   src/hw/ata.c         |   1 +
> >   src/hw/esp-scsi.c    |   1 +
> >   src/hw/lsi-scsi.c    |   1 +
> >   src/hw/megasas.c     |   1 +
> >   src/hw/mpt-scsi.c    |   1 +
> >   src/hw/nvme.c        |   1 +
> >   src/hw/pci.c         |  69 +++++++------
> >   src/hw/pci.h         |  42 +++++---
> >   src/hw/pci_ids.h     |   6 +-
> >   src/hw/pcidevice.c   |  11 +-
> >   src/hw/pcidevice.h   |   8 +-
> >   src/hw/pvscsi.c      |   1 +
> >   src/hw/sdcard.c      |   1 +
> >   src/hw/usb-ehci.c    |   1 +
> >   src/hw/usb-ohci.c    |   1 +
> >   src/hw/usb-uhci.c    |   1 +
> >   src/hw/usb-xhci.c    |   1 +
> >   src/hw/virtio-blk.c  |   1 +
> >   src/hw/virtio-scsi.c |   1 +
> >   src/optionroms.c     |   3 +
> >   26 files changed, 268 insertions(+), 170 deletions(-)
> >
>



More information about the SeaBIOS mailing list