[libvirt] [PATCH v3 00/12] PCI passthrough support on s390

Cornelia Huck cohuck at redhat.com
Mon Aug 13 06:59:52 UTC 2018


On Mon, 13 Aug 2018 12:46:16 +0800
Yi Min Zhao <zyimin at linux.ibm.com> wrote:

> Is there any comment? I expect comments from all of you.

Well, I don't have any objections from my side, but you need the
libvirt folks' opinion on this.

> 
> 
> 在 2018/8/7 下午5:10, Yi Min Zhao 写道:
> > Abstract
> > ========
> > The PCI representation in QEMU has recently been extended for S390
> > allowing configuration of zPCI attributes like uid (user-defined
> > identifier) and fid (PCI function identifier).
> > The details can be found here:
> > https://lists.gnu.org/archive/html/qemu-devel/2016-06/msg07262.html
> >
> > To support the new zPCI feature of the S390 platform, two new XML
> > attributes, @uid and @fid, are introduced for device addresses of type
> > 'pci', i.e.:
> >    <hostdev mode='subsystem' type='pci'>
> >      <driver name='vfio'/>
> >      <source>
> >        <address domain='0x0001' bus='0x00' slot='0x00' function='0x0'/>
> >      </source>
> >      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'
> >        uid='0x0003' fid='0x00000027'/>
> >    </hostdev>
> >
> > uid and fid are optional attributes. If they are defined by the user,
> > unique values within the guest domain must be used. If they are not
> > specified and the architecture requires them, they are automatically
> > generated with non-conflicting values.
> >
> > Current implementation is the most seamless one for the user as it
> > unites the address specific data of a PCI device on one XML element.
> > It could accommodate both specifying our special parameters (uid and fid)
> > and re-using standard statements (domain, bus, slot and function) for
> > PCI devices. User can still specify bus/slot/function for the virtualized
> > PCI devices in the XML.
> >
> > Thus uid/fid act as an extension to the PCI address and are stored in
> > a new structure 'virZPCIDeviceAddress' which is a member of common PCI
> > Address structure. Additionally, two hashtables are used for assignment
> > and reservation of uid/fid.
> >
> > In support of extending the PCI address, a new PCI address extension flag is
> > introduced. This extension flag allows is not only dedicated for the S390
> > platform but also other architectures needing certain extensions to PCI
> > address space.
> >
> > Code Base
> > =========
> > commit in master:
> > 087de2f5a3: docs: formatdomain: fix spacing before parentheses
> >
> > Change Log
> > ==========
> > v2->v3:
> > 1. Revise code style.
> > 2. Update test cases.
> > 3. Introduce qemuDomainCollectPCIAddressExtension() to collect PCI
> >     extension addresses.
> > 4. Introduce virDeviceInfoPCIAddressExtensionPresent() to check if zPCI
> >     address exists.
> > 5. Optimize zPCI address check logic.
> > 6. Optimize passed parameters of zPCI addr alloc/release/reserve functions.
> > 7. Report enum range error in qemuDomainDeviceSupportZPCI().
> > 8. Update commit messages.
> >
> > v1->v2:
> > 1. Separate test commit and merge testcases into corresponding commits that
> >     introduce the functionalities firstly.
> > 2. Spare some checks for zpci device.
> > 3. Add vsock and controller support.
> > 4. Add uin32 type schema.
> > 5. Rename zpciuid and zpcifid to zpci_uid and zpci_fid.
> > 6. Always return multibus support on S390.
> >
> > Yi Min Zhao (12):
> >    conf: Add definitions for 'uid' and 'fid' PCI address attributes
> >    qemu: Introduce zPCI capability
> >    conf: Introduce a new PCI address extension flag
> >    qemu: Enable PCI multi bus for S390 guests
> >    qemu: Auto add pci-root for s390/s390x guests
> >    conf: Introduce address caching for PCI extensions
> >    conf: Introduce parser, formatter for uid and fid
> >    conf: Allocate/release 'uid' and 'fid' in PCI address
> >    qemu: Generate and use zPCI device in QEMU command line
> >    qemu: Add hotpluging support for PCI devices on S390 guests
> >    docs: Add 'uid' and 'fid' information
> >    news: Update news for PCI address extension attributes
> >
> >   docs/formatdomain.html.in                          |   9 +-
> >   docs/news.xml                                      |  11 +
> >   docs/schemas/basictypes.rng                        |  23 ++
> >   docs/schemas/domaincommon.rng                      |   1 +
> >   src/conf/device_conf.c                             |  78 +++++
> >   src/conf/device_conf.h                             |   8 +
> >   src/conf/domain_addr.c                             | 379 +++++++++++++++++++++
> >   src/conf/domain_addr.h                             |  29 ++
> >   src/conf/domain_conf.c                             |   6 +
> >   src/libvirt_private.syms                           |   4 +
> >   src/qemu/qemu_capabilities.c                       |   6 +
> >   src/qemu/qemu_capabilities.h                       |   1 +
> >   src/qemu/qemu_command.c                            | 114 +++++++
> >   src/qemu/qemu_command.h                            |   4 +
> >   src/qemu/qemu_domain.c                             |   1 +
> >   src/qemu/qemu_domain_address.c                     | 204 ++++++++++-
> >   src/qemu/qemu_hotplug.c                            | 155 ++++++++-
> >   src/util/virpci.h                                  |  13 +
> >   tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml   |   1 +
> >   tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml   |   1 +
> >   tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml   |   1 +
> >   tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml    |   1 +
> >   tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml    |   1 +
> >   tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml    |   1 +
> >   tests/qemuxml2argvdata/disk-virtio-s390-zpci.args  |  27 ++
> >   tests/qemuxml2argvdata/disk-virtio-s390-zpci.xml   |  17 +
> >   .../hostdev-vfio-zpci-autogenerate.args            |  26 ++
> >   .../hostdev-vfio-zpci-autogenerate.xml             |  18 +
> >   .../hostdev-vfio-zpci-boundaries.args              |  30 ++
> >   .../hostdev-vfio-zpci-boundaries.xml               |  26 ++
> >   .../hostdev-vfio-zpci-multidomain-many.args        |  40 +++
> >   .../hostdev-vfio-zpci-multidomain-many.xml         |  67 ++++
> >   tests/qemuxml2argvdata/hostdev-vfio-zpci.args      |  26 ++
> >   tests/qemuxml2argvdata/hostdev-vfio-zpci.xml       |  19 ++
> >   tests/qemuxml2argvtest.c                           |  17 +
> >   tests/qemuxml2xmloutdata/disk-virtio-s390-zpci.xml |  29 ++
> >   .../hostdev-vfio-zpci-autogenerate.xml             |  30 ++
> >   .../hostdev-vfio-zpci-boundaries.xml               |  42 +++
> >   .../hostdev-vfio-zpci-multidomain-many.xml         |  79 +++++
> >   tests/qemuxml2xmloutdata/hostdev-vfio-zpci.xml     |  30 ++
> >   tests/qemuxml2xmltest.c                            |  14 +
> >   41 files changed, 1575 insertions(+), 14 deletions(-)
> >   create mode 100644 tests/qemuxml2argvdata/disk-virtio-s390-zpci.args
> >   create mode 100644 tests/qemuxml2argvdata/disk-virtio-s390-zpci.xml
> >   create mode 100644 tests/qemuxml2argvdata/hostdev-vfio-zpci-autogenerate.args
> >   create mode 100644 tests/qemuxml2argvdata/hostdev-vfio-zpci-autogenerate.xml
> >   create mode 100644 tests/qemuxml2argvdata/hostdev-vfio-zpci-boundaries.args
> >   create mode 100644 tests/qemuxml2argvdata/hostdev-vfio-zpci-boundaries.xml
> >   create mode 100644 tests/qemuxml2argvdata/hostdev-vfio-zpci-multidomain-many.args
> >   create mode 100644 tests/qemuxml2argvdata/hostdev-vfio-zpci-multidomain-many.xml
> >   create mode 100644 tests/qemuxml2argvdata/hostdev-vfio-zpci.args
> >   create mode 100644 tests/qemuxml2argvdata/hostdev-vfio-zpci.xml
> >   create mode 100644 tests/qemuxml2xmloutdata/disk-virtio-s390-zpci.xml
> >   create mode 100644 tests/qemuxml2xmloutdata/hostdev-vfio-zpci-autogenerate.xml
> >   create mode 100644 tests/qemuxml2xmloutdata/hostdev-vfio-zpci-boundaries.xml
> >   create mode 100644 tests/qemuxml2xmloutdata/hostdev-vfio-zpci-multidomain-many.xml
> >   create mode 100644 tests/qemuxml2xmloutdata/hostdev-vfio-zpci.xml
> >  
> 





More information about the libvir-list mailing list