[libvirt] [PATCH v6 00/13] PCI passthrough support on s390

Boris Fiuczynski fiuczy at linux.ibm.com
Wed Oct 10 14:34:41 UTC 2018


Polite ping...

On 9/28/18 10:46 AM, Yi Min Zhao wrote:
> 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, a new element of
> PCI address is introduced. It has two optional attributes, @uid and
> @fid. For example:
>    <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'>
>        <zpci uid='0x0003' fid='0x00000027'/>
>      </address>
>    </hostdev>
> 
> 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.
> 
> zPCI address as an extension of the PCI address 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 zPCI 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:
> b1a0f691ce4652fc71aca6776f085355040322da
> spec: Build ceph and gluster support everywhere
> 
> Change Log
> ==========
> v5->v6:
> 1. Modify zPCI XML definition.
> 2. Optimize the logic of zPCI address assignment and reservation.
> 3. Add extension flag into PCI address structure.
> 4. Update commit messages.
> 
> v4->v5:
> 1. Update the version number.
> 2. Fixup code style error.
> 3. Separate qemu code into single patch.
> 4. Rebase the patches to the new code of master branch.
> 
> v3->v4:
> 1. Update docs.
> 2. Format code style.
> 3. Optimize zPCI support check.
> 4. Move the check of zPCI defined in xml but unsupported by Qemu to
>     qemuDomainDeviceDefValidate().
> 5. Change zpci address member of PCI address struct from pointer to
>     instance.
> 6. Modify zpci address definition principle. Currently the user must
>     either define both of uid and fid or not.
> 
> 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 (13):
>    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
>    qemu: Add zPCI address definition check
>    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
> 
>   cfg.mk                                        |   1 +
>   docs/formatdomain.html.in                     |   9 +-
>   docs/news.xml                                 |  11 +
>   docs/schemas/basictypes.rng                   |  27 ++
>   docs/schemas/domaincommon.rng                 |   1 +
>   src/conf/device_conf.c                        |  90 +++++
>   src/conf/device_conf.h                        |   7 +
>   src/conf/domain_addr.c                        | 332 ++++++++++++++++++
>   src/conf/domain_addr.h                        |  30 ++
>   src/conf/domain_conf.c                        |  14 +-
>   src/libvirt_private.syms                      |   7 +
>   src/qemu/qemu_capabilities.c                  |   6 +
>   src/qemu/qemu_capabilities.h                  |   1 +
>   src/qemu/qemu_command.c                       | 102 ++++++
>   src/qemu/qemu_command.h                       |   2 +
>   src/qemu/qemu_domain.c                        |  39 ++
>   src/qemu/qemu_domain_address.c                | 204 ++++++++++-
>   src/qemu/qemu_hotplug.c                       | 162 ++++++++-
>   src/util/virpci.c                             |   7 +
>   src/util/virpci.h                             |  14 +
>   .../caps_2.10.0.s390x.xml                     |   1 +
>   .../caps_2.11.0.s390x.xml                     |   1 +
>   .../caps_2.12.0.s390x.xml                     |   1 +
>   .../qemucapabilitiesdata/caps_2.7.0.s390x.xml |   1 +
>   .../qemucapabilitiesdata/caps_2.8.0.s390x.xml |   1 +
>   .../qemucapabilitiesdata/caps_2.9.0.s390x.xml |   1 +
>   .../qemucapabilitiesdata/caps_3.0.0.s390x.xml |   1 +
>   .../disk-virtio-s390-zpci.args                |  26 ++
>   .../disk-virtio-s390-zpci.xml                 |  19 +
>   .../hostdev-vfio-zpci-autogenerate.args       |  25 ++
>   .../hostdev-vfio-zpci-autogenerate.xml        |  18 +
>   .../hostdev-vfio-zpci-boundaries.args         |  29 ++
>   .../hostdev-vfio-zpci-boundaries.xml          |  30 ++
>   .../hostdev-vfio-zpci-multidomain-many.args   |  39 ++
>   .../hostdev-vfio-zpci-multidomain-many.xml    |  79 +++++
>   tests/qemuxml2argvdata/hostdev-vfio-zpci.args |  25 ++
>   tests/qemuxml2argvdata/hostdev-vfio-zpci.xml  |  21 ++
>   tests/qemuxml2argvtest.c                      |  20 ++
>   .../disk-virtio-s390-zpci.xml                 |  31 ++
>   .../hostdev-vfio-zpci-autogenerate.xml        |  34 ++
>   .../hostdev-vfio-zpci-boundaries.xml          |  48 +++
>   .../hostdev-vfio-zpci-multidomain-many.xml    |  97 +++++
>   .../qemuxml2xmloutdata/hostdev-vfio-zpci.xml  |  32 ++
>   tests/qemuxml2xmltest.c                       |  17 +
>   44 files changed, 1648 insertions(+), 15 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
> 


-- 
Mit freundlichen Grüßen/Kind regards
    Boris Fiuczynski

IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martina Köderitz
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294




More information about the libvir-list mailing list