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
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
--
Yi Min
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Is there any comment? I expect comments from all of you. 在 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 > -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
On Mon, 13 Aug 2018 12:46:16 +0800 Yi Min Zhao <zyimin@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 > > > -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
在 2018/8/13 下午2:59, Cornelia Huck 写道: > On Mon, 13 Aug 2018 12:46:16 +0800 > Yi Min Zhao <zyimin@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. Thanks for your response! > >> >> 在 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 >>> > -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
On Tue, 2018-08-07 at 17:10 +0800, 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, 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> Overall thoughts on the series: the direction is good and the design looks solid, but there are still a few questions regarding the implementation that we'll need to figure out. We also need someone experienced in the area to look over the hotplug part, and I would feel way more comfortable merging this if Laine could go over the changes too... Hopefully he'll find time to do that when v3 rolls around :) -- Andrea Bolognani / Red Hat / Virtualization -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
© 2016 - 2026 Red Hat, Inc.