Kindly ping.
@Jan, could you please take a look?
@Andrea, I have updated the code as your comments on previous version.
在 2018/10/19 上午11:40, Yi Min Zhao 写道:
> Abstract
> ========
> The PCI representation in QEMU has 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:
> 3a1cdb06fd conf: Fix bug in finding alloc through matching vcpus
>
> Change Log
> ==========
> v6->v7:
> 1. Optimize some functions' names and code logic.
> 2. Fixup build error.
> 3. Add negative test case for patch 9.
> 4. Use virXMLFormatElement() in virDomainDeviceInfoFormat().
>
> 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 (14):
> 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: use virXMLFormatElement() in virDomainDeviceInfoFormat()
> 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 | 10 +-
> docs/news.xml | 11 +
> docs/schemas/basictypes.rng | 27 ++
> docs/schemas/domaincommon.rng | 1 +
> src/bhyve/bhyve_device.c | 3 +-
> src/conf/device_conf.c | 69 ++++
> src/conf/device_conf.h | 7 +
> src/conf/domain_addr.c | 340 +++++++++++++++++-
> src/conf/domain_addr.h | 27 +-
> src/conf/domain_conf.c | 50 ++-
> src/libvirt_private.syms | 7 +
> src/qemu/qemu_capabilities.c | 6 +
> src/qemu/qemu_capabilities.h | 1 +
> src/qemu/qemu_command.c | 104 ++++++
> src/qemu/qemu_command.h | 2 +
> src/qemu/qemu_domain.c | 37 ++
> src/qemu/qemu_domain_address.c | 205 ++++++++++-
> src/qemu/qemu_hotplug.c | 160 ++++++++-
> src/util/virpci.c | 26 ++
> src/util/virpci.h | 15 +
> .../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 ++++
> .../hostdev-vfio-zpci-wrong-arch.xml | 34 ++
> tests/qemuxml2argvdata/hostdev-vfio-zpci.args | 25 ++
> tests/qemuxml2argvdata/hostdev-vfio-zpci.xml | 21 ++
> tests/qemuxml2argvtest.c | 22 ++
> .../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 +
> 46 files changed, 1707 insertions(+), 35 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-wrong-arch.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
>
--
Yi Min
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list