[PATCH 00/21] qemu: IOthread setting changes

This series: 0) cleans up various things (patches 1, 16) 1) Fixes and modernizes testing of iothreads (patches 2-9) 2) Cleans up unneeded iothread capabilities (patches 10 - 13) 3) Adds XML and commandline support for iothread polling attributes (patches 14-15) 4) Contains a RFC for adding iothread to virtqueue mapping for disks (patches 17-21) The last patches are RFC because the qemu implementation is not done yet. It's based on Stefan's patches which add the intrface part (see patch 21) Peter Krempa (21): conf: virDomainDiskDefDriverParseXML: Drop unused XPath infrastructure qemuxml2argvtest: Remove 'iothreads-nocap' qemuxml2(argv|xml)test: Remove 'iothreads' case qemuxml2argvtest: Modernize the rest of 'iohtreads-*' qemuxml2xmltest: Modernize iothread CWW/SCSI test cases qemuxml2(argv|xml)test: Modernize 'cputune' test cases qemuxml2(argv|xmltest): Simplify testing of scheduler settings qemuxml2argvtest: Modernize negative cputune-* cases tests: qemuxml2argvdata: Remove irrelevant <disk> from 'iothread-*' cases qemu: Always assume support for iothreads qemu: capabilities: Retire unused QEMU_CAPS_OBJECT_IOTHREAD qemu: Always assume support for QEMU_CAPS_IOTHREAD_POLLING qemu: capabilities: Retire unused QEMU_CAPS_IOTHREAD_POLLING conf: Store the iothread 'poll' settings in the XML qemu: Use configured iothread poll parameters on startup docs: formatdomain: Properly indent example XML for setting 'metadata_cache' <<< RFC starts here >>> util: xml: Introduce virXMLNodeGetSubelement qemucapabilitiesdata: Bump qemu-8.0 caps for virtqeueues qemu: capabilities: Introduce QEMU_CAPS_VIRTIO_BLK_IOTHREAD_MAPPING conf: Add possibility to configure multiple iothreads per disk qemu: Implement support for configuring iothread to virtqueue mapping for disks docs/formatdomain.rst | 76 ++++--- src/conf/domain_conf.c | 124 ++++++++++- src/conf/domain_conf.h | 21 ++ src/conf/domain_validate.c | 8 + src/conf/schemas/domaincommon.rng | 66 ++++-- src/libvirt_private.syms | 1 + src/qemu/qemu_capabilities.c | 10 +- src/qemu/qemu_capabilities.h | 5 +- src/qemu/qemu_command.c | 63 ++++++ src/qemu/qemu_driver.c | 57 ++--- src/qemu/qemu_process.c | 23 -- src/qemu/qemu_validate.c | 117 ++++++++++- src/util/virxml.c | 29 +++ src/util/virxml.h | 4 + .../caps_4.2.0.aarch64.xml | 2 - .../qemucapabilitiesdata/caps_4.2.0.ppc64.xml | 2 - .../qemucapabilitiesdata/caps_4.2.0.s390x.xml | 2 - .../caps_4.2.0.x86_64.xml | 2 - .../caps_5.0.0.aarch64.xml | 2 - .../qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 2 - .../caps_5.0.0.riscv64.xml | 2 - .../caps_5.0.0.x86_64.xml | 2 - .../qemucapabilitiesdata/caps_5.1.0.sparc.xml | 2 - .../caps_5.1.0.x86_64.xml | 2 - .../caps_5.2.0.aarch64.xml | 2 - .../qemucapabilitiesdata/caps_5.2.0.ppc64.xml | 2 - .../caps_5.2.0.riscv64.xml | 2 - .../qemucapabilitiesdata/caps_5.2.0.s390x.xml | 2 - .../caps_5.2.0.x86_64.xml | 2 - .../caps_6.0.0.aarch64.xml | 2 - .../qemucapabilitiesdata/caps_6.0.0.s390x.xml | 2 - .../caps_6.0.0.x86_64.xml | 2 - .../caps_6.1.0.x86_64.xml | 2 - .../caps_6.2.0.aarch64.xml | 2 - .../qemucapabilitiesdata/caps_6.2.0.ppc64.xml | 2 - .../caps_6.2.0.x86_64.xml | 2 - .../caps_7.0.0.aarch64.xml | 2 - .../qemucapabilitiesdata/caps_7.0.0.ppc64.xml | 2 - .../caps_7.0.0.x86_64.xml | 2 - .../qemucapabilitiesdata/caps_7.1.0.ppc64.xml | 2 - .../caps_7.1.0.x86_64.xml | 2 - .../caps_7.2.0.x86_64.xml | 2 - .../caps_8.0.0.riscv64.xml | 2 - .../caps_8.0.0.x86_64.replies | 197 +++++++++--------- .../caps_8.0.0.x86_64.xml | 5 +- tests/qemuxml2argvdata/cputune-iothreads.xml | 39 ---- ...e-iothreadsched-toomuch.x86_64-latest.err} | 0 .../cputune-iothreadsched-zeropriority.xml | 40 ---- .../cputune-iothreadsched.xml | 39 ---- tests/qemuxml2argvdata/cputune-numatune.args | 32 --- ...gs => cputune-numatune.x86_64-latest.args} | 14 +- ...utune-vcpusched-overlap.x86_64-latest.err} | 0 ...=> cputune-zero-shares.x86_64-latest.args} | 15 +- .../qemuxml2argvdata/cputune-zero-shares.xml | 4 +- ...artial.args => cputune.x86_64-latest.args} | 24 ++- tests/qemuxml2argvdata/cputune.xml | 12 +- tests/qemuxml2argvdata/iothreads-disk.args | 41 ---- .../iothreads-disk.x86_64-latest.args | 46 ++++ tests/qemuxml2argvdata/iothreads-disk.xml | 35 +++- ... iothreads-ids-partial.x86_64-latest.args} | 20 +- .../iothreads-ids-partial.xml | 10 +- ...othreads-ids-pool-sizes.x86_64-latest.args | 9 +- .../iothreads-ids-pool-sizes.xml | 18 +- ....args => iothreads-ids.x86_64-latest.args} | 17 +- tests/qemuxml2argvdata/iothreads-ids.xml | 10 +- tests/qemuxml2argvdata/iothreads-nocap.err | 1 - tests/qemuxml2argvdata/iothreads-nocap.xml | 37 ---- ...othreads-virtio-scsi-pci.x86_64-5.2.0.args | 5 +- ...threads-virtio-scsi-pci.x86_64-latest.args | 5 +- .../iothreads-virtio-scsi-pci.xml | 6 - tests/qemuxml2argvdata/iothreads.args | 35 ---- tests/qemuxml2argvdata/iothreads.xml | 31 --- .../vcpu-placement-static.x86_64-latest.args | 39 ++++ .../vcpu-placement-static.xml | 16 ++ tests/qemuxml2argvtest.c | 24 +-- .../qemuxml2xmloutdata/cputune-iothreads.xml | 48 ----- .../cputune-iothreadsched-zeropriority.xml | 51 ----- .../cputune-iothreadsched.xml | 51 ----- ...xml => cputune-numatune.x86_64-latest.xml} | 5 +- ... => cputune-zero-shares.x86_64-latest.xml} | 9 +- ...{cputune.xml => cputune.x86_64-latest.xml} | 19 +- ...othreads-disk-virtio-ccw.s390x-latest.xml} | 4 + ...k.xml => iothreads-disk.x86_64-latest.xml} | 41 +++- ...> iothreads-ids-partial.x86_64-latest.xml} | 15 +- ...ds.xml => iothreads-ids.x86_64-latest.xml} | 15 +- ...othreads-virtio-scsi-ccw.s390x-latest.xml} | 4 + ...threads-virtio-scsi-pci.x86_64-latest.xml} | 11 +- tests/qemuxml2xmloutdata/iothreads.xml | 36 ---- ...> vcpu-placement-static.x86_64-latest.xml} | 0 tests/qemuxml2xmltest.c | 28 +-- 90 files changed, 887 insertions(+), 938 deletions(-) delete mode 100644 tests/qemuxml2argvdata/cputune-iothreads.xml rename tests/qemuxml2argvdata/{cputune-iothreadsched-toomuch.err => cputune-iothreadsched-toomuch.x86_64-latest.err} (100%) delete mode 100644 tests/qemuxml2argvdata/cputune-iothreadsched-zeropriority.xml delete mode 100644 tests/qemuxml2argvdata/cputune-iothreadsched.xml delete mode 100644 tests/qemuxml2argvdata/cputune-numatune.args rename tests/qemuxml2argvdata/{vcpu-placement-static.args => cputune-numatune.x86_64-latest.args} (55%) rename tests/qemuxml2argvdata/{cputune-vcpusched-overlap.err => cputune-vcpusched-overlap.x86_64-latest.err} (100%) rename tests/qemuxml2argvdata/{cputune-zero-shares.args => cputune-zero-shares.x86_64-latest.args} (59%) rename tests/qemuxml2argvdata/{iothreads-ids-partial.args => cputune.x86_64-latest.args} (50%) delete mode 100644 tests/qemuxml2argvdata/iothreads-disk.args create mode 100644 tests/qemuxml2argvdata/iothreads-disk.x86_64-latest.args rename tests/qemuxml2argvdata/{iothreads-ids.args => iothreads-ids-partial.x86_64-latest.args} (51%) rename tests/qemuxml2argvdata/{cputune.args => iothreads-ids.x86_64-latest.args} (55%) delete mode 100644 tests/qemuxml2argvdata/iothreads-nocap.err delete mode 100644 tests/qemuxml2argvdata/iothreads-nocap.xml delete mode 100644 tests/qemuxml2argvdata/iothreads.args delete mode 100644 tests/qemuxml2argvdata/iothreads.xml create mode 100644 tests/qemuxml2argvdata/vcpu-placement-static.x86_64-latest.args delete mode 100644 tests/qemuxml2xmloutdata/cputune-iothreads.xml delete mode 100644 tests/qemuxml2xmloutdata/cputune-iothreadsched-zeropriority.xml delete mode 100644 tests/qemuxml2xmloutdata/cputune-iothreadsched.xml rename tests/qemuxml2xmloutdata/{cputune-numatune.xml => cputune-numatune.x86_64-latest.xml} (86%) rename tests/qemuxml2xmloutdata/{cputune-zero-shares.xml => cputune-zero-shares.x86_64-latest.xml} (84%) rename tests/qemuxml2xmloutdata/{cputune.xml => cputune.x86_64-latest.xml} (68%) rename tests/qemuxml2xmloutdata/{iothreads-disk-virtio-ccw.xml => iothreads-disk-virtio-ccw.s390x-latest.xml} (89%) rename tests/qemuxml2xmloutdata/{iothreads-disk.xml => iothreads-disk.x86_64-latest.xml} (58%) rename tests/qemuxml2xmloutdata/{iothreads-ids-partial.xml => iothreads-ids-partial.x86_64-latest.xml} (72%) rename tests/qemuxml2xmloutdata/{iothreads-ids.xml => iothreads-ids.x86_64-latest.xml} (71%) rename tests/qemuxml2xmloutdata/{iothreads-virtio-scsi-ccw.xml => iothreads-virtio-scsi-ccw.s390x-latest.xml} (90%) rename tests/qemuxml2xmloutdata/{iothreads-virtio-scsi-pci.xml => iothreads-virtio-scsi-pci.x86_64-latest.xml} (85%) delete mode 100644 tests/qemuxml2xmloutdata/iothreads.xml rename tests/qemuxml2xmloutdata/{vcpu-placement-static.xml => vcpu-placement-static.x86_64-latest.xml} (100%) -- 2.39.2

The function doesn't use XPath at all. Don't pass the context to it. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/conf/domain_conf.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 39ddfb7db0..ad2b44b610 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -7743,13 +7743,8 @@ virDomainDiskDefGeometryParse(virDomainDiskDef *def, static int virDomainDiskDefDriverParseXML(virDomainDiskDef *def, - xmlNodePtr cur, - xmlXPathContextPtr ctxt) + xmlNodePtr cur) { - VIR_XPATH_NODE_AUTORESTORE(ctxt) - - ctxt->node = cur; - def->driverName = virXMLPropString(cur, "name"); if (virXMLPropEnum(cur, "cache", virDomainDiskCacheTypeFromString, @@ -8037,7 +8032,7 @@ virDomainDiskDefParseXML(virDomainXMLOption *xmlopt, if (virDomainVirtioOptionsParseXML(driverNode, &def->virtio) < 0) return NULL; - if (virDomainDiskDefDriverParseXML(def, driverNode, ctxt) < 0) + if (virDomainDiskDefDriverParseXML(def, driverNode) < 0) return NULL; if (virDomainDiskDefDriverSourceParseXML(def->src, driverNode, ctxt) < 0) -- 2.39.2

All supported QEMU versions now support iothreads thus upcoming patches will be removing the capability checks. Remove the 'iothreads-nocap' case which will become invalid. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tests/qemuxml2argvdata/iothreads-nocap.err | 1 - tests/qemuxml2argvdata/iothreads-nocap.xml | 37 ---------------------- tests/qemuxml2argvtest.c | 1 - 3 files changed, 39 deletions(-) delete mode 100644 tests/qemuxml2argvdata/iothreads-nocap.err delete mode 100644 tests/qemuxml2argvdata/iothreads-nocap.xml diff --git a/tests/qemuxml2argvdata/iothreads-nocap.err b/tests/qemuxml2argvdata/iothreads-nocap.err deleted file mode 100644 index ed2f47ecd5..0000000000 --- a/tests/qemuxml2argvdata/iothreads-nocap.err +++ /dev/null @@ -1 +0,0 @@ -unsupported configuration: IOThreads not supported for this QEMU diff --git a/tests/qemuxml2argvdata/iothreads-nocap.xml b/tests/qemuxml2argvdata/iothreads-nocap.xml deleted file mode 100644 index fa04d735cd..0000000000 --- a/tests/qemuxml2argvdata/iothreads-nocap.xml +++ /dev/null @@ -1,37 +0,0 @@ -<domain type='qemu'> - <name>QEMUGuest1</name> - <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> - <memory unit='KiB'>219136</memory> - <currentMemory unit='KiB'>219136</currentMemory> - <vcpu placement='static'>2</vcpu> - <iothreads>4</iothreads> - <iothreadids> - <iothread id='5'/> - <iothread id='6'/> - </iothreadids> - <cputune> - <iothreadpin iothread='5' cpuset='2'/> - <iothreadpin iothread='6' cpuset='1'/> - </cputune> - <os> - <type arch='i686' machine='pc'>hvm</type> - <boot dev='hd'/> - </os> - <clock offset='utc'/> - <on_poweroff>destroy</on_poweroff> - <on_reboot>restart</on_reboot> - <on_crash>destroy</on_crash> - <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> - <disk type='block' device='disk'> - <driver name='qemu' type='raw'/> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> - <controller type='usb' index='0'/> - <controller type='ide' index='0'/> - <controller type='pci' index='0' model='pci-root'/> - <memballoon model='none'/> - </devices> -</domain> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 5a33c336c8..1956e6da08 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1887,7 +1887,6 @@ mymain(void) DO_TEST("iothreads-ids", QEMU_CAPS_OBJECT_IOTHREAD); DO_TEST("iothreads-ids-partial", QEMU_CAPS_OBJECT_IOTHREAD); DO_TEST_CAPS_LATEST("iothreads-ids-pool-sizes"); - DO_TEST_FAILURE_NOCAPS("iothreads-nocap"); DO_TEST("iothreads-disk", QEMU_CAPS_OBJECT_IOTHREAD); DO_TEST_CAPS_ARCH_VER("iothreads-disk-virtio-ccw", "s390x", "4.2.0"); DO_TEST_CAPS_VER("iothreads-virtio-scsi-pci", "5.2.0"); -- 2.39.2

'iothreads-disk' covers everything that 'iothreads' did in addition to actually using the iothread. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tests/qemuxml2argvdata/iothreads.args | 35 ------------------------- tests/qemuxml2argvdata/iothreads.xml | 31 ---------------------- tests/qemuxml2argvtest.c | 1 - tests/qemuxml2xmloutdata/iothreads.xml | 36 -------------------------- tests/qemuxml2xmltest.c | 1 - 5 files changed, 104 deletions(-) delete mode 100644 tests/qemuxml2argvdata/iothreads.args delete mode 100644 tests/qemuxml2argvdata/iothreads.xml delete mode 100644 tests/qemuxml2xmloutdata/iothreads.xml diff --git a/tests/qemuxml2argvdata/iothreads.args b/tests/qemuxml2argvdata/iothreads.args deleted file mode 100644 index 88e6fa4906..0000000000 --- a/tests/qemuxml2argvdata/iothreads.args +++ /dev/null @@ -1,35 +0,0 @@ -LC_ALL=C \ -PATH=/bin \ -HOME=/tmp/lib/domain--1-QEMUGuest1 \ -USER=test \ -LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-QEMUGuest1/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-QEMUGuest1/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -/usr/bin/qemu-system-i386 \ --name guest=QEMUGuest1,debug-threads=on \ --S \ --object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ --machine pc,usb=off,dump-guest-core=off \ --accel tcg \ --m 214 \ --overcommit mem-lock=off \ --smp 2,sockets=2,cores=1,threads=1 \ --object iothread,id=iothread1 \ --object iothread,id=iothread2 \ --uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ --display none \ --no-user-config \ --nodefaults \ --chardev socket,id=charmonitor,fd=1729,server=on,wait=off \ --mon chardev=charmonitor,id=monitor,mode=control \ --rtc base=utc \ --no-shutdown \ --no-acpi \ --boot strict=on \ --usb \ --blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ --blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ --device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \ --audiodev '{"id":"audio1","driver":"none"}' \ --msg timestamp=on diff --git a/tests/qemuxml2argvdata/iothreads.xml b/tests/qemuxml2argvdata/iothreads.xml deleted file mode 100644 index 1c860ddd25..0000000000 --- a/tests/qemuxml2argvdata/iothreads.xml +++ /dev/null @@ -1,31 +0,0 @@ -<domain type='qemu'> - <name>QEMUGuest1</name> - <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> - <memory unit='KiB'>219136</memory> - <currentMemory unit='KiB'>219136</currentMemory> - <vcpu placement='static'>2</vcpu> - <iothreads>2</iothreads> - <os> - <type arch='i686' machine='pc'>hvm</type> - <boot dev='hd'/> - </os> - <clock offset='utc'/> - <on_poweroff>destroy</on_poweroff> - <on_reboot>restart</on_reboot> - <on_crash>destroy</on_crash> - <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> - <disk type='block' device='disk'> - <driver name='qemu' type='raw'/> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> - <controller type='usb' index='0'/> - <controller type='ide' index='0'/> - <controller type='pci' index='0' model='pci-root'/> - <input type='mouse' bus='ps2'/> - <input type='keyboard' bus='ps2'/> - <memballoon model='none'/> - </devices> -</domain> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 1956e6da08..5db882a142 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1883,7 +1883,6 @@ mymain(void) DO_TEST_NOCAPS("smp"); DO_TEST("smp-dies", QEMU_CAPS_SMP_DIES); - DO_TEST("iothreads", QEMU_CAPS_OBJECT_IOTHREAD); DO_TEST("iothreads-ids", QEMU_CAPS_OBJECT_IOTHREAD); DO_TEST("iothreads-ids-partial", QEMU_CAPS_OBJECT_IOTHREAD); DO_TEST_CAPS_LATEST("iothreads-ids-pool-sizes"); diff --git a/tests/qemuxml2xmloutdata/iothreads.xml b/tests/qemuxml2xmloutdata/iothreads.xml deleted file mode 100644 index 17e5f8bce1..0000000000 --- a/tests/qemuxml2xmloutdata/iothreads.xml +++ /dev/null @@ -1,36 +0,0 @@ -<domain type='qemu'> - <name>QEMUGuest1</name> - <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> - <memory unit='KiB'>219136</memory> - <currentMemory unit='KiB'>219136</currentMemory> - <vcpu placement='static'>2</vcpu> - <iothreads>2</iothreads> - <os> - <type arch='i686' machine='pc'>hvm</type> - <boot dev='hd'/> - </os> - <clock offset='utc'/> - <on_poweroff>destroy</on_poweroff> - <on_reboot>restart</on_reboot> - <on_crash>destroy</on_crash> - <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> - <disk type='block' device='disk'> - <driver name='qemu' type='raw'/> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> - <controller type='usb' index='0'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> - </controller> - <controller type='ide' index='0'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> - </controller> - <controller type='pci' index='0' model='pci-root'/> - <input type='mouse' bus='ps2'/> - <input type='keyboard' bus='ps2'/> - <audio id='1' type='none'/> - <memballoon model='none'/> - </devices> -</domain> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 2d2d800523..676a707f44 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -582,7 +582,6 @@ mymain(void) DO_TEST_CAPS_LATEST("numavcpus-topology-mismatch"); DO_TEST_NOCAPS("smp"); - DO_TEST_NOCAPS("iothreads"); DO_TEST_NOCAPS("iothreads-ids"); DO_TEST_CAPS_LATEST("iothreads-ids-pool-sizes"); DO_TEST_NOCAPS("iothreads-ids-partial"); -- 2.39.2

Use DO_TEST_CAPS_LATEST for the basic tests. The emulator needed to be tweaked to work with the real caps data. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- ...args => iothreads-disk.x86_64-latest.args} | 21 +++++++++++-------- tests/qemuxml2argvdata/iothreads-disk.xml | 4 ++-- ... iothreads-ids-partial.x86_64-latest.args} | 19 ++++++++++------- .../iothreads-ids-partial.xml | 4 ++-- ....args => iothreads-ids.x86_64-latest.args} | 19 +++++++++-------- tests/qemuxml2argvdata/iothreads-ids.xml | 4 ++-- tests/qemuxml2argvtest.c | 6 +++--- ...k.xml => iothreads-disk.x86_64-latest.xml} | 9 +++++--- ...> iothreads-ids-partial.x86_64-latest.xml} | 9 +++++--- ...ds.xml => iothreads-ids.x86_64-latest.xml} | 9 +++++--- tests/qemuxml2xmltest.c | 6 +++--- 11 files changed, 64 insertions(+), 46 deletions(-) rename tests/qemuxml2argvdata/{iothreads-disk.args => iothreads-disk.x86_64-latest.args} (60%) rename tests/qemuxml2argvdata/{iothreads-ids.args => iothreads-ids-partial.x86_64-latest.args} (54%) rename tests/qemuxml2argvdata/{iothreads-ids-partial.args => iothreads-ids.x86_64-latest.args} (58%) rename tests/qemuxml2xmloutdata/{iothreads-disk.xml => iothreads-disk.x86_64-latest.xml} (86%) rename tests/qemuxml2xmloutdata/{iothreads-ids-partial.xml => iothreads-ids-partial.x86_64-latest.xml} (82%) rename tests/qemuxml2xmloutdata/{iothreads-ids.xml => iothreads-ids.x86_64-latest.xml} (82%) diff --git a/tests/qemuxml2argvdata/iothreads-disk.args b/tests/qemuxml2argvdata/iothreads-disk.x86_64-latest.args similarity index 60% rename from tests/qemuxml2argvdata/iothreads-disk.args rename to tests/qemuxml2argvdata/iothreads-disk.x86_64-latest.args index ef80cf4008..1f18c97c97 100644 --- a/tests/qemuxml2argvdata/iothreads-disk.args +++ b/tests/qemuxml2argvdata/iothreads-disk.x86_64-latest.args @@ -6,17 +6,19 @@ LOGNAME=test \ XDG_DATA_HOME=/tmp/lib/domain--1-QEMUGuest1/.local/share \ XDG_CACHE_HOME=/tmp/lib/domain--1-QEMUGuest1/.cache \ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -/usr/bin/qemu-system-i386 \ +/usr/bin/qemu-system-x86_64 \ -name guest=QEMUGuest1,debug-threads=on \ -S \ --object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ --machine pc,usb=off,dump-guest-core=off \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-QEMUGuest1/master-key.aes"}' \ +-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram \ -accel tcg \ +-cpu qemu64 \ -m 214 \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \ -overcommit mem-lock=off \ -smp 2,sockets=2,cores=1,threads=1 \ --object iothread,id=iothread1 \ --object iothread,id=iothread2 \ +-object '{"qom-type":"iothread","id":"iothread1"}' \ +-object '{"qom-type":"iothread","id":"iothread2"}' \ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ -display none \ -no-user-config \ @@ -27,15 +29,16 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -no-shutdown \ -no-acpi \ -boot strict=on \ --usb \ +-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \ -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-3-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-3-format","read-only":false,"driver":"raw","file":"libvirt-3-storage"}' \ --device ide-hd,bus=ide.0,unit=0,drive=libvirt-3-format,id=ide0-0-0,bootindex=1 \ +-device '{"driver":"ide-hd","bus":"ide.0","unit":0,"drive":"libvirt-3-format","id":"ide0-0-0","bootindex":1}' \ -blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/iothrtest1.img","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-2-format","read-only":false,"driver":"raw","file":"libvirt-2-storage"}' \ --device virtio-blk-pci,iothread=iothread1,bus=pci.0,addr=0x4,drive=libvirt-2-format,id=virtio-disk1 \ +-device '{"driver":"virtio-blk-pci","iothread":"iothread1","bus":"pci.0","addr":"0x4","drive":"libvirt-2-format","id":"virtio-disk1"}' \ -blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/iothrtest2.img","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ --device virtio-blk-pci,iothread=iothread2,bus=pci.0,addr=0x2,drive=libvirt-1-format,id=virtio-disk2 \ +-device '{"driver":"virtio-blk-pci","iothread":"iothread2","bus":"pci.0","addr":"0x2","drive":"libvirt-1-format","id":"virtio-disk2"}' \ -audiodev '{"id":"audio1","driver":"none"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on diff --git a/tests/qemuxml2argvdata/iothreads-disk.xml b/tests/qemuxml2argvdata/iothreads-disk.xml index bbfac34db5..485ae3760e 100644 --- a/tests/qemuxml2argvdata/iothreads-disk.xml +++ b/tests/qemuxml2argvdata/iothreads-disk.xml @@ -6,7 +6,7 @@ <vcpu placement='static'>2</vcpu> <iothreads>2</iothreads> <os> - <type arch='i686' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc'>hvm</type> <boot dev='hd'/> </os> <clock offset='utc'/> @@ -14,7 +14,7 @@ <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> + <emulator>/usr/bin/qemu-system-x86_64</emulator> <disk type='block' device='disk'> <driver name='qemu' type='raw'/> <source dev='/dev/HostVG/QEMUGuest1'/> diff --git a/tests/qemuxml2argvdata/iothreads-ids.args b/tests/qemuxml2argvdata/iothreads-ids-partial.x86_64-latest.args similarity index 54% rename from tests/qemuxml2argvdata/iothreads-ids.args rename to tests/qemuxml2argvdata/iothreads-ids-partial.x86_64-latest.args index ddb79f9bef..857e343f8d 100644 --- a/tests/qemuxml2argvdata/iothreads-ids.args +++ b/tests/qemuxml2argvdata/iothreads-ids-partial.x86_64-latest.args @@ -6,17 +6,21 @@ LOGNAME=test \ XDG_DATA_HOME=/tmp/lib/domain--1-QEMUGuest1/.local/share \ XDG_CACHE_HOME=/tmp/lib/domain--1-QEMUGuest1/.cache \ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -/usr/bin/qemu-system-i386 \ +/usr/bin/qemu-system-x86_64 \ -name guest=QEMUGuest1,debug-threads=on \ -S \ --object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ --machine pc,usb=off,dump-guest-core=off \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-QEMUGuest1/master-key.aes"}' \ +-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram \ -accel tcg \ +-cpu qemu64 \ -m 214 \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \ -overcommit mem-lock=off \ -smp 2,sockets=2,cores=1,threads=1 \ --object iothread,id=iothread2 \ --object iothread,id=iothread4 \ +-object '{"qom-type":"iothread","id":"iothread5"}' \ +-object '{"qom-type":"iothread","id":"iothread6"}' \ +-object '{"qom-type":"iothread","id":"iothread1"}' \ +-object '{"qom-type":"iothread","id":"iothread2"}' \ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ -display none \ -no-user-config \ @@ -27,9 +31,10 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -no-shutdown \ -no-acpi \ -boot strict=on \ --usb \ +-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \ -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ --device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \ +-device '{"driver":"ide-hd","bus":"ide.0","unit":0,"drive":"libvirt-1-format","id":"ide0-0-0","bootindex":1}' \ -audiodev '{"id":"audio1","driver":"none"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on diff --git a/tests/qemuxml2argvdata/iothreads-ids-partial.xml b/tests/qemuxml2argvdata/iothreads-ids-partial.xml index 25069acf80..ff759f2ce2 100644 --- a/tests/qemuxml2argvdata/iothreads-ids-partial.xml +++ b/tests/qemuxml2argvdata/iothreads-ids-partial.xml @@ -10,7 +10,7 @@ <iothread id='6'/> </iothreadids> <os> - <type arch='i686' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc'>hvm</type> <boot dev='hd'/> </os> <clock offset='utc'/> @@ -18,7 +18,7 @@ <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> + <emulator>/usr/bin/qemu-system-x86_64</emulator> <disk type='block' device='disk'> <driver name='qemu' type='raw'/> <source dev='/dev/HostVG/QEMUGuest1'/> diff --git a/tests/qemuxml2argvdata/iothreads-ids-partial.args b/tests/qemuxml2argvdata/iothreads-ids.x86_64-latest.args similarity index 58% rename from tests/qemuxml2argvdata/iothreads-ids-partial.args rename to tests/qemuxml2argvdata/iothreads-ids.x86_64-latest.args index a20f6e68bf..dd4280ad96 100644 --- a/tests/qemuxml2argvdata/iothreads-ids-partial.args +++ b/tests/qemuxml2argvdata/iothreads-ids.x86_64-latest.args @@ -6,19 +6,19 @@ LOGNAME=test \ XDG_DATA_HOME=/tmp/lib/domain--1-QEMUGuest1/.local/share \ XDG_CACHE_HOME=/tmp/lib/domain--1-QEMUGuest1/.cache \ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -/usr/bin/qemu-system-i386 \ +/usr/bin/qemu-system-x86_64 \ -name guest=QEMUGuest1,debug-threads=on \ -S \ --object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ --machine pc,usb=off,dump-guest-core=off \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-QEMUGuest1/master-key.aes"}' \ +-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram \ -accel tcg \ +-cpu qemu64 \ -m 214 \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \ -overcommit mem-lock=off \ -smp 2,sockets=2,cores=1,threads=1 \ --object iothread,id=iothread5 \ --object iothread,id=iothread6 \ --object iothread,id=iothread1 \ --object iothread,id=iothread2 \ +-object '{"qom-type":"iothread","id":"iothread2"}' \ +-object '{"qom-type":"iothread","id":"iothread4"}' \ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ -display none \ -no-user-config \ @@ -29,9 +29,10 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -no-shutdown \ -no-acpi \ -boot strict=on \ --usb \ +-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \ -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ --device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \ +-device '{"driver":"ide-hd","bus":"ide.0","unit":0,"drive":"libvirt-1-format","id":"ide0-0-0","bootindex":1}' \ -audiodev '{"id":"audio1","driver":"none"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on diff --git a/tests/qemuxml2argvdata/iothreads-ids.xml b/tests/qemuxml2argvdata/iothreads-ids.xml index d41a07efa5..aca3d7dece 100644 --- a/tests/qemuxml2argvdata/iothreads-ids.xml +++ b/tests/qemuxml2argvdata/iothreads-ids.xml @@ -10,7 +10,7 @@ <iothread id='4'/> </iothreadids> <os> - <type arch='i686' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc'>hvm</type> <boot dev='hd'/> </os> <clock offset='utc'/> @@ -18,7 +18,7 @@ <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> + <emulator>/usr/bin/qemu-system-x86_64</emulator> <disk type='block' device='disk'> <driver name='qemu' type='raw'/> <source dev='/dev/HostVG/QEMUGuest1'/> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 5db882a142..8dc21ea51e 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1883,10 +1883,10 @@ mymain(void) DO_TEST_NOCAPS("smp"); DO_TEST("smp-dies", QEMU_CAPS_SMP_DIES); - DO_TEST("iothreads-ids", QEMU_CAPS_OBJECT_IOTHREAD); - DO_TEST("iothreads-ids-partial", QEMU_CAPS_OBJECT_IOTHREAD); + DO_TEST_CAPS_LATEST("iothreads-ids"); + DO_TEST_CAPS_LATEST("iothreads-ids-partial"); DO_TEST_CAPS_LATEST("iothreads-ids-pool-sizes"); - DO_TEST("iothreads-disk", QEMU_CAPS_OBJECT_IOTHREAD); + DO_TEST_CAPS_LATEST("iothreads-disk"); DO_TEST_CAPS_ARCH_VER("iothreads-disk-virtio-ccw", "s390x", "4.2.0"); DO_TEST_CAPS_VER("iothreads-virtio-scsi-pci", "5.2.0"); DO_TEST_CAPS_LATEST("iothreads-virtio-scsi-pci"); diff --git a/tests/qemuxml2xmloutdata/iothreads-disk.xml b/tests/qemuxml2xmloutdata/iothreads-disk.x86_64-latest.xml similarity index 86% rename from tests/qemuxml2xmloutdata/iothreads-disk.xml rename to tests/qemuxml2xmloutdata/iothreads-disk.x86_64-latest.xml index 38074b4c62..2155971ef0 100644 --- a/tests/qemuxml2xmloutdata/iothreads-disk.xml +++ b/tests/qemuxml2xmloutdata/iothreads-disk.x86_64-latest.xml @@ -6,15 +6,18 @@ <vcpu placement='static'>2</vcpu> <iothreads>2</iothreads> <os> - <type arch='i686' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc'>hvm</type> <boot dev='hd'/> </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> + <emulator>/usr/bin/qemu-system-x86_64</emulator> <disk type='block' device='disk'> <driver name='qemu' type='raw'/> <source dev='/dev/HostVG/QEMUGuest1'/> @@ -33,7 +36,7 @@ <target dev='vdc' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </disk> - <controller type='usb' index='0'> + <controller type='usb' index='0' model='piix3-uhci'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='ide' index='0'> diff --git a/tests/qemuxml2xmloutdata/iothreads-ids-partial.xml b/tests/qemuxml2xmloutdata/iothreads-ids-partial.x86_64-latest.xml similarity index 82% rename from tests/qemuxml2xmloutdata/iothreads-ids-partial.xml rename to tests/qemuxml2xmloutdata/iothreads-ids-partial.x86_64-latest.xml index b6afcf9cbb..c40bac6643 100644 --- a/tests/qemuxml2xmloutdata/iothreads-ids-partial.xml +++ b/tests/qemuxml2xmloutdata/iothreads-ids-partial.x86_64-latest.xml @@ -12,22 +12,25 @@ <iothread id='2'/> </iothreadids> <os> - <type arch='i686' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc'>hvm</type> <boot dev='hd'/> </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> + <emulator>/usr/bin/qemu-system-x86_64</emulator> <disk type='block' device='disk'> <driver name='qemu' type='raw'/> <source dev='/dev/HostVG/QEMUGuest1'/> <target dev='hda' bus='ide'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> - <controller type='usb' index='0'> + <controller type='usb' index='0' model='piix3-uhci'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='ide' index='0'> diff --git a/tests/qemuxml2xmloutdata/iothreads-ids.xml b/tests/qemuxml2xmloutdata/iothreads-ids.x86_64-latest.xml similarity index 82% rename from tests/qemuxml2xmloutdata/iothreads-ids.xml rename to tests/qemuxml2xmloutdata/iothreads-ids.x86_64-latest.xml index 4f73431581..4b55b08ac4 100644 --- a/tests/qemuxml2xmloutdata/iothreads-ids.xml +++ b/tests/qemuxml2xmloutdata/iothreads-ids.x86_64-latest.xml @@ -10,22 +10,25 @@ <iothread id='4'/> </iothreadids> <os> - <type arch='i686' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc'>hvm</type> <boot dev='hd'/> </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> + <emulator>/usr/bin/qemu-system-x86_64</emulator> <disk type='block' device='disk'> <driver name='qemu' type='raw'/> <source dev='/dev/HostVG/QEMUGuest1'/> <target dev='hda' bus='ide'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> - <controller type='usb' index='0'> + <controller type='usb' index='0' model='piix3-uhci'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='ide' index='0'> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 676a707f44..4d9c6853a7 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -582,11 +582,11 @@ mymain(void) DO_TEST_CAPS_LATEST("numavcpus-topology-mismatch"); DO_TEST_NOCAPS("smp"); - DO_TEST_NOCAPS("iothreads-ids"); + DO_TEST_CAPS_LATEST("iothreads-ids"); DO_TEST_CAPS_LATEST("iothreads-ids-pool-sizes"); - DO_TEST_NOCAPS("iothreads-ids-partial"); + DO_TEST_CAPS_LATEST("iothreads-ids-partial"); DO_TEST_NOCAPS("cputune-iothreads"); - DO_TEST_NOCAPS("iothreads-disk"); + DO_TEST_CAPS_LATEST("iothreads-disk"); DO_TEST_NOCAPS("iothreads-disk-virtio-ccw"); DO_TEST("iothreads-virtio-scsi-pci", QEMU_CAPS_VIRTIO_SCSI); -- 2.39.2

The argv counterparts are already modernized. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- ...ccw.xml => iothreads-disk-virtio-ccw.s390x-latest.xml} | 4 ++++ ...ccw.xml => iothreads-virtio-scsi-ccw.s390x-latest.xml} | 4 ++++ ...ci.xml => iothreads-virtio-scsi-pci.x86_64-latest.xml} | 5 ++++- tests/qemuxml2xmltest.c | 8 +++----- 4 files changed, 15 insertions(+), 6 deletions(-) rename tests/qemuxml2xmloutdata/{iothreads-disk-virtio-ccw.xml => iothreads-disk-virtio-ccw.s390x-latest.xml} (89%) rename tests/qemuxml2xmloutdata/{iothreads-virtio-scsi-ccw.xml => iothreads-virtio-scsi-ccw.s390x-latest.xml} (90%) rename tests/qemuxml2xmloutdata/{iothreads-virtio-scsi-pci.xml => iothreads-virtio-scsi-pci.x86_64-latest.xml} (92%) diff --git a/tests/qemuxml2xmloutdata/iothreads-disk-virtio-ccw.xml b/tests/qemuxml2xmloutdata/iothreads-disk-virtio-ccw.s390x-latest.xml similarity index 89% rename from tests/qemuxml2xmloutdata/iothreads-disk-virtio-ccw.xml rename to tests/qemuxml2xmloutdata/iothreads-disk-virtio-ccw.s390x-latest.xml index 05cb204ea5..cdcee3bbb4 100644 --- a/tests/qemuxml2xmloutdata/iothreads-disk-virtio-ccw.xml +++ b/tests/qemuxml2xmloutdata/iothreads-disk-virtio-ccw.s390x-latest.xml @@ -9,6 +9,9 @@ <type arch='s390x' machine='s390-ccw-virtio'>hvm</type> <boot dev='hd'/> </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu</model> + </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> @@ -28,6 +31,7 @@ <address type='ccw' cssid='0x0' ssid='0x0' devno='0x0007'/> </disk> <controller type='usb' index='0' model='none'/> + <controller type='pci' index='0' model='pci-root'/> <audio id='1' type='none'/> <memballoon model='virtio'> <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x000a'/> diff --git a/tests/qemuxml2xmloutdata/iothreads-virtio-scsi-ccw.xml b/tests/qemuxml2xmloutdata/iothreads-virtio-scsi-ccw.s390x-latest.xml similarity index 90% rename from tests/qemuxml2xmloutdata/iothreads-virtio-scsi-ccw.xml rename to tests/qemuxml2xmloutdata/iothreads-virtio-scsi-ccw.s390x-latest.xml index 11fead6c8b..d73f43f235 100644 --- a/tests/qemuxml2xmloutdata/iothreads-virtio-scsi-ccw.xml +++ b/tests/qemuxml2xmloutdata/iothreads-virtio-scsi-ccw.s390x-latest.xml @@ -9,6 +9,9 @@ <type arch='s390x' machine='s390-ccw-virtio'>hvm</type> <boot dev='hd'/> </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu</model> + </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> @@ -32,6 +35,7 @@ <driver iothread='2'/> <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0001'/> </controller> + <controller type='pci' index='0' model='pci-root'/> <audio id='1' type='none'/> <memballoon model='virtio'> <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x000a'/> diff --git a/tests/qemuxml2xmloutdata/iothreads-virtio-scsi-pci.xml b/tests/qemuxml2xmloutdata/iothreads-virtio-scsi-pci.x86_64-latest.xml similarity index 92% rename from tests/qemuxml2xmloutdata/iothreads-virtio-scsi-pci.xml rename to tests/qemuxml2xmloutdata/iothreads-virtio-scsi-pci.x86_64-latest.xml index b2c66ba9b8..5418a38a39 100644 --- a/tests/qemuxml2xmloutdata/iothreads-virtio-scsi-pci.xml +++ b/tests/qemuxml2xmloutdata/iothreads-virtio-scsi-pci.x86_64-latest.xml @@ -9,6 +9,9 @@ <type arch='x86_64' machine='pc'>hvm</type> <boot dev='hd'/> </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> @@ -33,7 +36,7 @@ <target dev='sdc' bus='scsi'/> <address type='drive' controller='0' bus='0' target='0' unit='3'/> </disk> - <controller type='usb' index='0'> + <controller type='usb' index='0' model='piix3-uhci'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='ide' index='0'> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 4d9c6853a7..ef71df7b3f 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -587,11 +587,9 @@ mymain(void) DO_TEST_CAPS_LATEST("iothreads-ids-partial"); DO_TEST_NOCAPS("cputune-iothreads"); DO_TEST_CAPS_LATEST("iothreads-disk"); - DO_TEST_NOCAPS("iothreads-disk-virtio-ccw"); - DO_TEST("iothreads-virtio-scsi-pci", - QEMU_CAPS_VIRTIO_SCSI); - DO_TEST("iothreads-virtio-scsi-ccw", - QEMU_CAPS_VIRTIO_SCSI); + DO_TEST_CAPS_ARCH_LATEST("iothreads-disk-virtio-ccw", "s390x"); + DO_TEST_CAPS_LATEST("iothreads-virtio-scsi-pci"); + DO_TEST_CAPS_ARCH_LATEST("iothreads-virtio-scsi-ccw", "s390x"); DO_TEST_NOCAPS("lease"); DO_TEST_NOCAPS("event_idx"); DO_TEST_NOCAPS("vhost_queues"); -- 2.39.2

Use DO_TEST_CAPS_LATEST for cputune-numatune, cputune-zero-shares, cputune, and vcpu-placement-static cases. Do the necessary tweaks to work with actual data. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- ...gs => cputune-numatune.x86_64-latest.args} | 13 ++++--- ...=> cputune-zero-shares.x86_64-latest.args} | 15 ++++--- .../qemuxml2argvdata/cputune-zero-shares.xml | 4 +- ...putune.args => cputune.x86_64-latest.args} | 15 ++++--- tests/qemuxml2argvdata/cputune.xml | 4 +- .../vcpu-placement-static.args | 33 ---------------- .../vcpu-placement-static.x86_64-latest.args | 39 +++++++++++++++++++ .../vcpu-placement-static.xml | 16 ++++++++ tests/qemuxml2argvtest.c | 12 ++---- ...xml => cputune-numatune.x86_64-latest.xml} | 5 ++- ... => cputune-zero-shares.x86_64-latest.xml} | 9 +++-- ...{cputune.xml => cputune.x86_64-latest.xml} | 9 +++-- ...> vcpu-placement-static.x86_64-latest.xml} | 0 tests/qemuxml2xmltest.c | 10 ++--- 14 files changed, 109 insertions(+), 75 deletions(-) rename tests/qemuxml2argvdata/{cputune-numatune.args => cputune-numatune.x86_64-latest.args} (55%) rename tests/qemuxml2argvdata/{cputune-zero-shares.args => cputune-zero-shares.x86_64-latest.args} (59%) rename tests/qemuxml2argvdata/{cputune.args => cputune.x86_64-latest.args} (59%) delete mode 100644 tests/qemuxml2argvdata/vcpu-placement-static.args create mode 100644 tests/qemuxml2argvdata/vcpu-placement-static.x86_64-latest.args rename tests/qemuxml2xmloutdata/{cputune-numatune.xml => cputune-numatune.x86_64-latest.xml} (86%) rename tests/qemuxml2xmloutdata/{cputune-zero-shares.xml => cputune-zero-shares.x86_64-latest.xml} (84%) rename tests/qemuxml2xmloutdata/{cputune.xml => cputune.x86_64-latest.xml} (85%) rename tests/qemuxml2xmloutdata/{vcpu-placement-static.xml => vcpu-placement-static.x86_64-latest.xml} (100%) diff --git a/tests/qemuxml2argvdata/cputune-numatune.args b/tests/qemuxml2argvdata/cputune-numatune.x86_64-latest.args similarity index 55% rename from tests/qemuxml2argvdata/cputune-numatune.args rename to tests/qemuxml2argvdata/cputune-numatune.x86_64-latest.args index dbadcb9ec5..627be89d83 100644 --- a/tests/qemuxml2argvdata/cputune-numatune.args +++ b/tests/qemuxml2argvdata/cputune-numatune.x86_64-latest.args @@ -9,14 +9,16 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-dummy2/.config \ /usr/bin/qemu-system-x86_64 \ -name guest=dummy2,debug-threads=on \ -S \ --object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-dummy2/master-key.aes \ --machine pc,usb=off,dump-guest-core=off \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-dummy2/master-key.aes"}' \ +-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram \ -accel kvm \ +-cpu qemu64 \ -m 128 \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":134217728,"host-nodes":[0,1,2,3],"policy":"bind"}' \ -overcommit mem-lock=off \ -smp 2,maxcpus=6,sockets=6,cores=1,threads=1 \ --object iothread,id=iothread1 \ --object iothread,id=iothread2 \ +-object '{"qom-type":"iothread","id":"iothread1"}' \ +-object '{"qom-type":"iothread","id":"iothread2"}' \ -uuid 4d92ec27-9ebf-400b-ae91-20c71c647c19 \ -display none \ -no-user-config \ @@ -27,6 +29,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-dummy2/.config \ -no-shutdown \ -no-acpi \ -boot strict=on \ --usb \ +-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \ -audiodev '{"id":"audio1","driver":"none"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on diff --git a/tests/qemuxml2argvdata/cputune-zero-shares.args b/tests/qemuxml2argvdata/cputune-zero-shares.x86_64-latest.args similarity index 59% rename from tests/qemuxml2argvdata/cputune-zero-shares.args rename to tests/qemuxml2argvdata/cputune-zero-shares.x86_64-latest.args index f30ed2fed6..d77c1db2c2 100644 --- a/tests/qemuxml2argvdata/cputune-zero-shares.args +++ b/tests/qemuxml2argvdata/cputune-zero-shares.x86_64-latest.args @@ -6,13 +6,15 @@ LOGNAME=test \ XDG_DATA_HOME=/tmp/lib/domain--1-QEMUGuest1/.local/share \ XDG_CACHE_HOME=/tmp/lib/domain--1-QEMUGuest1/.cache \ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -/usr/bin/qemu-system-i386 \ +/usr/bin/qemu-system-x86_64 \ -name guest=QEMUGuest1,debug-threads=on \ -S \ --object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ --machine pc,usb=off,dump-guest-core=off \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-QEMUGuest1/master-key.aes"}' \ +-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram \ -accel tcg \ +-cpu qemu64 \ -m 214 \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \ -overcommit mem-lock=off \ -smp 2,sockets=2,cores=1,threads=1 \ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ @@ -25,10 +27,11 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -no-shutdown \ -no-acpi \ -boot strict=on \ --usb \ +-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \ -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ --device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \ +-device '{"driver":"ide-hd","bus":"ide.0","unit":0,"drive":"libvirt-1-format","id":"ide0-0-0","bootindex":1}' \ -audiodev '{"id":"audio1","driver":"none"}' \ --device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x2 \ +-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x2"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on diff --git a/tests/qemuxml2argvdata/cputune-zero-shares.xml b/tests/qemuxml2argvdata/cputune-zero-shares.xml index 0b1369fe05..643804ec53 100644 --- a/tests/qemuxml2argvdata/cputune-zero-shares.xml +++ b/tests/qemuxml2argvdata/cputune-zero-shares.xml @@ -13,7 +13,7 @@ <emulatorpin cpuset='1'/> </cputune> <os> - <type arch='i686' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc'>hvm</type> <boot dev='hd'/> </os> <clock offset='utc'/> @@ -21,7 +21,7 @@ <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> + <emulator>/usr/bin/qemu-system-x86_64</emulator> <disk type='block' device='disk'> <source dev='/dev/HostVG/QEMUGuest1'/> <target dev='hda' bus='ide'/> diff --git a/tests/qemuxml2argvdata/cputune.args b/tests/qemuxml2argvdata/cputune.x86_64-latest.args similarity index 59% rename from tests/qemuxml2argvdata/cputune.args rename to tests/qemuxml2argvdata/cputune.x86_64-latest.args index f30ed2fed6..d77c1db2c2 100644 --- a/tests/qemuxml2argvdata/cputune.args +++ b/tests/qemuxml2argvdata/cputune.x86_64-latest.args @@ -6,13 +6,15 @@ LOGNAME=test \ XDG_DATA_HOME=/tmp/lib/domain--1-QEMUGuest1/.local/share \ XDG_CACHE_HOME=/tmp/lib/domain--1-QEMUGuest1/.cache \ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -/usr/bin/qemu-system-i386 \ +/usr/bin/qemu-system-x86_64 \ -name guest=QEMUGuest1,debug-threads=on \ -S \ --object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ --machine pc,usb=off,dump-guest-core=off \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-QEMUGuest1/master-key.aes"}' \ +-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram \ -accel tcg \ +-cpu qemu64 \ -m 214 \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \ -overcommit mem-lock=off \ -smp 2,sockets=2,cores=1,threads=1 \ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ @@ -25,10 +27,11 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -no-shutdown \ -no-acpi \ -boot strict=on \ --usb \ +-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \ -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ --device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \ +-device '{"driver":"ide-hd","bus":"ide.0","unit":0,"drive":"libvirt-1-format","id":"ide0-0-0","bootindex":1}' \ -audiodev '{"id":"audio1","driver":"none"}' \ --device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x2 \ +-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x2"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on diff --git a/tests/qemuxml2argvdata/cputune.xml b/tests/qemuxml2argvdata/cputune.xml index d7a5db0bb6..3c8116f637 100644 --- a/tests/qemuxml2argvdata/cputune.xml +++ b/tests/qemuxml2argvdata/cputune.xml @@ -17,7 +17,7 @@ <emulatorpin cpuset='1'/> </cputune> <os> - <type arch='i686' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc'>hvm</type> <boot dev='hd'/> </os> <clock offset='utc'/> @@ -25,7 +25,7 @@ <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> + <emulator>/usr/bin/qemu-system-x86_64</emulator> <disk type='block' device='disk'> <source dev='/dev/HostVG/QEMUGuest1'/> <target dev='hda' bus='ide'/> diff --git a/tests/qemuxml2argvdata/vcpu-placement-static.args b/tests/qemuxml2argvdata/vcpu-placement-static.args deleted file mode 100644 index 3502b92d5d..0000000000 --- a/tests/qemuxml2argvdata/vcpu-placement-static.args +++ /dev/null @@ -1,33 +0,0 @@ -LC_ALL=C \ -PATH=/bin \ -HOME=/tmp/lib/domain--1-dummy2 \ -USER=test \ -LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-dummy2/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-dummy2/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-dummy2/.config \ -/usr/bin/qemu-system-x86_64 \ --name guest=dummy2,debug-threads=on \ --S \ --object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-dummy2/master-key.aes \ --machine q35,usb=off,dump-guest-core=off \ --accel kvm \ --m 128 \ --overcommit mem-lock=off \ --smp 2,maxcpus=6,sockets=6,cores=1,threads=1 \ --object iothread,id=iothread1 \ --object iothread,id=iothread2 \ --uuid 4d92ec27-9ebf-400b-ae91-20c71c647c19 \ --display none \ --no-user-config \ --nodefaults \ --chardev socket,id=charmonitor,fd=1729,server=on,wait=off \ --mon chardev=charmonitor,id=monitor,mode=control \ --rtc base=utc \ --no-shutdown \ --no-acpi \ --boot strict=on \ --audiodev '{"id":"audio1","driver":"none"}' \ --global ICH9-LPC.noreboot=off \ --watchdog-action reset \ --msg timestamp=on diff --git a/tests/qemuxml2argvdata/vcpu-placement-static.x86_64-latest.args b/tests/qemuxml2argvdata/vcpu-placement-static.x86_64-latest.args new file mode 100644 index 0000000000..d467a28680 --- /dev/null +++ b/tests/qemuxml2argvdata/vcpu-placement-static.x86_64-latest.args @@ -0,0 +1,39 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/tmp/lib/domain--1-dummy2 \ +USER=test \ +LOGNAME=test \ +XDG_DATA_HOME=/tmp/lib/domain--1-dummy2/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-dummy2/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-dummy2/.config \ +/usr/bin/qemu-system-x86_64 \ +-name guest=dummy2,debug-threads=on \ +-S \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-dummy2/master-key.aes"}' \ +-machine q35,usb=off,dump-guest-core=off,memory-backend=pc.ram \ +-accel kvm \ +-cpu qemu64 \ +-m 128 \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":134217728,"host-nodes":[0,1,2,3],"policy":"bind"}' \ +-overcommit mem-lock=off \ +-smp 2,maxcpus=6,sockets=6,cores=1,threads=1 \ +-object '{"qom-type":"iothread","id":"iothread1"}' \ +-object '{"qom-type":"iothread","id":"iothread2"}' \ +-uuid 4d92ec27-9ebf-400b-ae91-20c71c647c19 \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=charmonitor,fd=1729,server=on,wait=off \ +-mon chardev=charmonitor,id=monitor,mode=control \ +-rtc base=utc \ +-no-shutdown \ +-no-acpi \ +-boot strict=on \ +-device '{"driver":"pcie-root-port","port":8,"chassis":1,"id":"pci.1","bus":"pcie.0","multifunction":true,"addr":"0x1"}' \ +-device '{"driver":"pcie-root-port","port":9,"chassis":2,"id":"pci.2","bus":"pcie.0","addr":"0x1.0x1"}' \ +-device '{"driver":"qemu-xhci","id":"usb","bus":"pci.1","addr":"0x0"}' \ +-audiodev '{"id":"audio1","driver":"none"}' \ +-global ICH9-LPC.noreboot=off \ +-watchdog-action reset \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxml2argvdata/vcpu-placement-static.xml b/tests/qemuxml2argvdata/vcpu-placement-static.xml index 3fd604d496..916e5a3fec 100644 --- a/tests/qemuxml2argvdata/vcpu-placement-static.xml +++ b/tests/qemuxml2argvdata/vcpu-placement-static.xml @@ -16,6 +16,9 @@ <type arch='x86_64' machine='q35'>hvm</type> <boot dev='hd'/> </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> @@ -26,6 +29,19 @@ <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> </controller> <controller type='pci' index='0' model='pcie-root'/> + <controller type='pci' index='1' model='pcie-root-port'> + <model name='pcie-root-port'/> + <target chassis='1' port='0x8'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0' multifunction='on'/> + </controller> + <controller type='pci' index='2' model='pcie-root-port'> + <model name='pcie-root-port'/> + <target chassis='2' port='0x9'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> + </controller> + <controller type='usb' index='0' model='qemu-xhci'> + <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> + </controller> <input type='mouse' bus='ps2'/> <input type='keyboard' bus='ps2'/> <audio id='1' type='none'/> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 8dc21ea51e..3807aee947 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1960,16 +1960,12 @@ mymain(void) DO_TEST_NOCAPS("memtune-unlimited"); DO_TEST_NOCAPS("blkiotune"); DO_TEST_NOCAPS("blkiotune-device"); - DO_TEST_NOCAPS("cputune"); - DO_TEST_NOCAPS("cputune-zero-shares"); + DO_TEST_CAPS_LATEST("cputune"); + DO_TEST_CAPS_LATEST("cputune-zero-shares"); DO_TEST_PARSE_ERROR_NOCAPS("cputune-iothreadsched-toomuch"); DO_TEST_PARSE_ERROR_NOCAPS("cputune-vcpusched-overlap"); - DO_TEST("cputune-numatune", - QEMU_CAPS_KVM, - QEMU_CAPS_OBJECT_IOTHREAD); - DO_TEST("vcpu-placement-static", - QEMU_CAPS_KVM, - QEMU_CAPS_OBJECT_IOTHREAD); + DO_TEST_CAPS_LATEST("cputune-numatune"); + DO_TEST_CAPS_LATEST("vcpu-placement-static"); DO_TEST_CAPS_LATEST("cputune-cpuset-big-id"); DO_TEST_NOCAPS("numatune-memory"); diff --git a/tests/qemuxml2xmloutdata/cputune-numatune.xml b/tests/qemuxml2xmloutdata/cputune-numatune.x86_64-latest.xml similarity index 86% rename from tests/qemuxml2xmloutdata/cputune-numatune.xml rename to tests/qemuxml2xmloutdata/cputune-numatune.x86_64-latest.xml index 7a2a9d643f..bd6f3c82c3 100644 --- a/tests/qemuxml2xmloutdata/cputune-numatune.xml +++ b/tests/qemuxml2xmloutdata/cputune-numatune.x86_64-latest.xml @@ -16,13 +16,16 @@ <type arch='x86_64' machine='pc'>hvm</type> <boot dev='hd'/> </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> <emulator>/usr/bin/qemu-system-x86_64</emulator> - <controller type='usb' index='0'> + <controller type='usb' index='0' model='piix3-uhci'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='pci' index='0' model='pci-root'/> diff --git a/tests/qemuxml2xmloutdata/cputune-zero-shares.xml b/tests/qemuxml2xmloutdata/cputune-zero-shares.x86_64-latest.xml similarity index 84% rename from tests/qemuxml2xmloutdata/cputune-zero-shares.xml rename to tests/qemuxml2xmloutdata/cputune-zero-shares.x86_64-latest.xml index 557f142445..d81235e887 100644 --- a/tests/qemuxml2xmloutdata/cputune-zero-shares.xml +++ b/tests/qemuxml2xmloutdata/cputune-zero-shares.x86_64-latest.xml @@ -13,22 +13,25 @@ <emulatorpin cpuset='1'/> </cputune> <os> - <type arch='i686' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc'>hvm</type> <boot dev='hd'/> </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> + <emulator>/usr/bin/qemu-system-x86_64</emulator> <disk type='block' device='disk'> <driver name='qemu' type='raw'/> <source dev='/dev/HostVG/QEMUGuest1'/> <target dev='hda' bus='ide'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> - <controller type='usb' index='0'> + <controller type='usb' index='0' model='piix3-uhci'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='ide' index='0'> diff --git a/tests/qemuxml2xmloutdata/cputune.xml b/tests/qemuxml2xmloutdata/cputune.x86_64-latest.xml similarity index 85% rename from tests/qemuxml2xmloutdata/cputune.xml rename to tests/qemuxml2xmloutdata/cputune.x86_64-latest.xml index 0c1ac3d50e..3a94b6c1c6 100644 --- a/tests/qemuxml2xmloutdata/cputune.xml +++ b/tests/qemuxml2xmloutdata/cputune.x86_64-latest.xml @@ -17,22 +17,25 @@ <emulatorpin cpuset='1'/> </cputune> <os> - <type arch='i686' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc'>hvm</type> <boot dev='hd'/> </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> + <emulator>/usr/bin/qemu-system-x86_64</emulator> <disk type='block' device='disk'> <driver name='qemu' type='raw'/> <source dev='/dev/HostVG/QEMUGuest1'/> <target dev='hda' bus='ide'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> - <controller type='usb' index='0'> + <controller type='usb' index='0' model='piix3-uhci'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='ide' index='0'> diff --git a/tests/qemuxml2xmloutdata/vcpu-placement-static.xml b/tests/qemuxml2xmloutdata/vcpu-placement-static.x86_64-latest.xml similarity index 100% rename from tests/qemuxml2xmloutdata/vcpu-placement-static.xml rename to tests/qemuxml2xmloutdata/vcpu-placement-static.x86_64-latest.xml diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index ef71df7b3f..0b66d2407f 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -570,14 +570,12 @@ mymain(void) DO_TEST_NOCAPS("memtune-unlimited"); DO_TEST_NOCAPS("blkiotune"); DO_TEST_NOCAPS("blkiotune-device"); - DO_TEST_NOCAPS("cputune"); - DO_TEST_NOCAPS("cputune-zero-shares"); + DO_TEST_CAPS_LATEST("cputune"); + DO_TEST_CAPS_LATEST("cputune-zero-shares"); DO_TEST_NOCAPS("cputune-iothreadsched"); DO_TEST_NOCAPS("cputune-iothreadsched-zeropriority"); - DO_TEST_NOCAPS("cputune-numatune"); - DO_TEST("vcpu-placement-static", - QEMU_CAPS_KVM, - QEMU_CAPS_OBJECT_IOTHREAD); + DO_TEST_CAPS_LATEST("cputune-numatune"); + DO_TEST_CAPS_LATEST("vcpu-placement-static"); DO_TEST_CAPS_LATEST("cputune-cpuset-big-id"); DO_TEST_CAPS_LATEST("numavcpus-topology-mismatch"); -- 2.39.2

Remove the cputune-iothreads, cputune-iothreadsched-zeropriority, cputune-iothreadsched test files by moving the relevant elements into the cputune case as we can setup scheduler settings for multiple objects and thus test everything in one go. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tests/qemuxml2argvdata/cputune-iothreads.xml | 39 -------------- .../cputune-iothreadsched-zeropriority.xml | 40 --------------- .../cputune-iothreadsched.xml | 39 -------------- .../cputune.x86_64-latest.args | 6 ++- tests/qemuxml2argvdata/cputune.xml | 8 ++- .../qemuxml2xmloutdata/cputune-iothreads.xml | 48 ----------------- .../cputune-iothreadsched-zeropriority.xml | 51 ------------------- .../cputune-iothreadsched.xml | 51 ------------------- .../cputune.x86_64-latest.xml | 10 +++- tests/qemuxml2xmltest.c | 3 -- 10 files changed, 21 insertions(+), 274 deletions(-) delete mode 100644 tests/qemuxml2argvdata/cputune-iothreads.xml delete mode 100644 tests/qemuxml2argvdata/cputune-iothreadsched-zeropriority.xml delete mode 100644 tests/qemuxml2argvdata/cputune-iothreadsched.xml delete mode 100644 tests/qemuxml2xmloutdata/cputune-iothreads.xml delete mode 100644 tests/qemuxml2xmloutdata/cputune-iothreadsched-zeropriority.xml delete mode 100644 tests/qemuxml2xmloutdata/cputune-iothreadsched.xml diff --git a/tests/qemuxml2argvdata/cputune-iothreads.xml b/tests/qemuxml2argvdata/cputune-iothreads.xml deleted file mode 100644 index d55d85c07d..0000000000 --- a/tests/qemuxml2argvdata/cputune-iothreads.xml +++ /dev/null @@ -1,39 +0,0 @@ -<domain type='qemu'> - <name>QEMUGuest1</name> - <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> - <memory unit='KiB'>219136</memory> - <currentMemory unit='KiB'>219136</currentMemory> - <vcpu placement='static'>2</vcpu> - <iothreads>2</iothreads> - <cputune> - <!-- intentionally in odd order --> - <iothreadpin iothread='2' cpuset='3'/> - <iothreadpin iothread='1' cpuset='2'/> - <emulatorpin cpuset='1'/> - <vcpupin vcpu='0' cpuset='0'/> - <vcpupin vcpu='1' cpuset='1'/> - <quota>-1</quota> - <period>1000000</period> - <shares>2048</shares> - </cputune> - <os> - <type arch='i686' machine='pc'>hvm</type> - <boot dev='hd'/> - </os> - <clock offset='utc'/> - <on_poweroff>destroy</on_poweroff> - <on_reboot>restart</on_reboot> - <on_crash>destroy</on_crash> - <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> - <disk type='block' device='disk'> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> - <controller type='usb' index='0'/> - <controller type='ide' index='0'/> - <controller type='pci' index='0' model='pci-root'/> - <memballoon model='virtio'/> - </devices> -</domain> diff --git a/tests/qemuxml2argvdata/cputune-iothreadsched-zeropriority.xml b/tests/qemuxml2argvdata/cputune-iothreadsched-zeropriority.xml deleted file mode 100644 index 1144e0f132..0000000000 --- a/tests/qemuxml2argvdata/cputune-iothreadsched-zeropriority.xml +++ /dev/null @@ -1,40 +0,0 @@ -<domain type='qemu'> - <name>QEMUGuest1</name> - <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> - <memory unit='KiB'>219136</memory> - <currentMemory unit='KiB'>219136</currentMemory> - <vcpu placement='static'>2</vcpu> - <iothreads>4</iothreads> - <cputune> - <shares>2048</shares> - <period>1000000</period> - <quota>-1</quota> - <vcpupin vcpu='0' cpuset='0'/> - <vcpupin vcpu='1' cpuset='1'/> - <emulatorpin cpuset='1'/> - <vcpusched vcpus='0-1' scheduler='fifo' priority='0'/> - <iothreadsched iothreads='1-3' scheduler='rr' priority='0'/> - </cputune> - <os> - <type arch='i686' machine='pc'>hvm</type> - <boot dev='hd'/> - </os> - <clock offset='utc'/> - <on_poweroff>destroy</on_poweroff> - <on_reboot>restart</on_reboot> - <on_crash>destroy</on_crash> - <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> - <disk type='block' device='disk'> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> - <controller type='usb' index='0'/> - <controller type='ide' index='0'/> - <controller type='pci' index='0' model='pci-root'/> - <input type='mouse' bus='ps2'/> - <input type='keyboard' bus='ps2'/> - <memballoon model='virtio'/> - </devices> -</domain> diff --git a/tests/qemuxml2argvdata/cputune-iothreadsched.xml b/tests/qemuxml2argvdata/cputune-iothreadsched.xml deleted file mode 100644 index 73bcec602e..0000000000 --- a/tests/qemuxml2argvdata/cputune-iothreadsched.xml +++ /dev/null @@ -1,39 +0,0 @@ -<domain type='qemu'> - <name>QEMUGuest1</name> - <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> - <memory unit='KiB'>219136</memory> - <currentMemory unit='KiB'>219136</currentMemory> - <vcpu placement='static'>2</vcpu> - <iothreads>4</iothreads> - <cputune> - <shares>2048</shares> - <period>1000000</period> - <quota>-1</quota> - <vcpupin vcpu='0' cpuset='0'/> - <vcpupin vcpu='1' cpuset='1'/> - <emulatorpin cpuset='1'/> - <vcpusched vcpus='0-1' scheduler='fifo' priority='1'/> - <iothreadsched iothreads='1-3,^2' scheduler='batch'/> - <iothreadsched iothreads='2' scheduler='batch'/> - </cputune> - <os> - <type arch='i686' machine='pc'>hvm</type> - <boot dev='hd'/> - </os> - <clock offset='utc'/> - <on_poweroff>destroy</on_poweroff> - <on_reboot>restart</on_reboot> - <on_crash>destroy</on_crash> - <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> - <disk type='block' device='disk'> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> - <controller type='usb' index='0'/> - <controller type='ide' index='0'/> - <controller type='pci' index='0' model='pci-root'/> - <memballoon model='virtio'/> - </devices> -</domain> diff --git a/tests/qemuxml2argvdata/cputune.x86_64-latest.args b/tests/qemuxml2argvdata/cputune.x86_64-latest.args index d77c1db2c2..e52211ee6d 100644 --- a/tests/qemuxml2argvdata/cputune.x86_64-latest.args +++ b/tests/qemuxml2argvdata/cputune.x86_64-latest.args @@ -16,7 +16,11 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -m 214 \ -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \ -overcommit mem-lock=off \ --smp 2,sockets=2,cores=1,threads=1 \ +-smp 4,sockets=4,cores=1,threads=1 \ +-object '{"qom-type":"iothread","id":"iothread1"}' \ +-object '{"qom-type":"iothread","id":"iothread2"}' \ +-object '{"qom-type":"iothread","id":"iothread3"}' \ +-object '{"qom-type":"iothread","id":"iothread4"}' \ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ -display none \ -no-user-config \ diff --git a/tests/qemuxml2argvdata/cputune.xml b/tests/qemuxml2argvdata/cputune.xml index 3c8116f637..722636780c 100644 --- a/tests/qemuxml2argvdata/cputune.xml +++ b/tests/qemuxml2argvdata/cputune.xml @@ -3,7 +3,8 @@ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> <memory unit='KiB'>219136</memory> <currentMemory unit='KiB'>219136</currentMemory> - <vcpu placement='static'>2</vcpu> + <vcpu placement='static'>4</vcpu> + <iothreads>4</iothreads> <cputune> <shares>2048</shares> <period>1000000</period> @@ -15,6 +16,11 @@ <vcpupin vcpu='0' cpuset='0'/> <vcpupin vcpu='1' cpuset='1'/> <emulatorpin cpuset='1'/> + <vcpusched vcpus='2-3' scheduler='rr' priority='1'/> + <vcpusched vcpus='0' scheduler='batch'/> + <vcpusched vcpus='1' scheduler='fifo' priority='0'/> + <iothreadsched iothreads='1-3,^2' scheduler='batch'/> + <iothreadsched iothreads='2' scheduler='rr' priority='0'/> </cputune> <os> <type arch='x86_64' machine='pc'>hvm</type> diff --git a/tests/qemuxml2xmloutdata/cputune-iothreads.xml b/tests/qemuxml2xmloutdata/cputune-iothreads.xml deleted file mode 100644 index 36c4b0920f..0000000000 --- a/tests/qemuxml2xmloutdata/cputune-iothreads.xml +++ /dev/null @@ -1,48 +0,0 @@ -<domain type='qemu'> - <name>QEMUGuest1</name> - <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> - <memory unit='KiB'>219136</memory> - <currentMemory unit='KiB'>219136</currentMemory> - <vcpu placement='static'>2</vcpu> - <iothreads>2</iothreads> - <cputune> - <shares>2048</shares> - <period>1000000</period> - <quota>-1</quota> - <vcpupin vcpu='0' cpuset='0'/> - <vcpupin vcpu='1' cpuset='1'/> - <emulatorpin cpuset='1'/> - <iothreadpin iothread='1' cpuset='2'/> - <iothreadpin iothread='2' cpuset='3'/> - </cputune> - <os> - <type arch='i686' machine='pc'>hvm</type> - <boot dev='hd'/> - </os> - <clock offset='utc'/> - <on_poweroff>destroy</on_poweroff> - <on_reboot>restart</on_reboot> - <on_crash>destroy</on_crash> - <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> - <disk type='block' device='disk'> - <driver name='qemu' type='raw'/> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> - <controller type='usb' index='0'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> - </controller> - <controller type='ide' index='0'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> - </controller> - <controller type='pci' index='0' model='pci-root'/> - <input type='mouse' bus='ps2'/> - <input type='keyboard' bus='ps2'/> - <audio id='1' type='none'/> - <memballoon model='virtio'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> - </memballoon> - </devices> -</domain> diff --git a/tests/qemuxml2xmloutdata/cputune-iothreadsched-zeropriority.xml b/tests/qemuxml2xmloutdata/cputune-iothreadsched-zeropriority.xml deleted file mode 100644 index b6a79108e3..0000000000 --- a/tests/qemuxml2xmloutdata/cputune-iothreadsched-zeropriority.xml +++ /dev/null @@ -1,51 +0,0 @@ -<domain type='qemu'> - <name>QEMUGuest1</name> - <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> - <memory unit='KiB'>219136</memory> - <currentMemory unit='KiB'>219136</currentMemory> - <vcpu placement='static'>2</vcpu> - <iothreads>4</iothreads> - <cputune> - <shares>2048</shares> - <period>1000000</period> - <quota>-1</quota> - <vcpupin vcpu='0' cpuset='0'/> - <vcpupin vcpu='1' cpuset='1'/> - <emulatorpin cpuset='1'/> - <vcpusched vcpus='0' scheduler='fifo' priority='0'/> - <vcpusched vcpus='1' scheduler='fifo' priority='0'/> - <iothreadsched iothreads='1' scheduler='rr' priority='0'/> - <iothreadsched iothreads='2' scheduler='rr' priority='0'/> - <iothreadsched iothreads='3' scheduler='rr' priority='0'/> - </cputune> - <os> - <type arch='i686' machine='pc'>hvm</type> - <boot dev='hd'/> - </os> - <clock offset='utc'/> - <on_poweroff>destroy</on_poweroff> - <on_reboot>restart</on_reboot> - <on_crash>destroy</on_crash> - <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> - <disk type='block' device='disk'> - <driver name='qemu' type='raw'/> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> - <controller type='usb' index='0'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> - </controller> - <controller type='ide' index='0'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> - </controller> - <controller type='pci' index='0' model='pci-root'/> - <input type='mouse' bus='ps2'/> - <input type='keyboard' bus='ps2'/> - <audio id='1' type='none'/> - <memballoon model='virtio'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> - </memballoon> - </devices> -</domain> diff --git a/tests/qemuxml2xmloutdata/cputune-iothreadsched.xml b/tests/qemuxml2xmloutdata/cputune-iothreadsched.xml deleted file mode 100644 index ca94bc8a38..0000000000 --- a/tests/qemuxml2xmloutdata/cputune-iothreadsched.xml +++ /dev/null @@ -1,51 +0,0 @@ -<domain type='qemu'> - <name>QEMUGuest1</name> - <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> - <memory unit='KiB'>219136</memory> - <currentMemory unit='KiB'>219136</currentMemory> - <vcpu placement='static'>2</vcpu> - <iothreads>4</iothreads> - <cputune> - <shares>2048</shares> - <period>1000000</period> - <quota>-1</quota> - <vcpupin vcpu='0' cpuset='0'/> - <vcpupin vcpu='1' cpuset='1'/> - <emulatorpin cpuset='1'/> - <vcpusched vcpus='0' scheduler='fifo' priority='1'/> - <vcpusched vcpus='1' scheduler='fifo' priority='1'/> - <iothreadsched iothreads='1' scheduler='batch'/> - <iothreadsched iothreads='2' scheduler='batch'/> - <iothreadsched iothreads='3' scheduler='batch'/> - </cputune> - <os> - <type arch='i686' machine='pc'>hvm</type> - <boot dev='hd'/> - </os> - <clock offset='utc'/> - <on_poweroff>destroy</on_poweroff> - <on_reboot>restart</on_reboot> - <on_crash>destroy</on_crash> - <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> - <disk type='block' device='disk'> - <driver name='qemu' type='raw'/> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> - <controller type='usb' index='0'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> - </controller> - <controller type='ide' index='0'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> - </controller> - <controller type='pci' index='0' model='pci-root'/> - <input type='mouse' bus='ps2'/> - <input type='keyboard' bus='ps2'/> - <audio id='1' type='none'/> - <memballoon model='virtio'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> - </memballoon> - </devices> -</domain> diff --git a/tests/qemuxml2xmloutdata/cputune.x86_64-latest.xml b/tests/qemuxml2xmloutdata/cputune.x86_64-latest.xml index 3a94b6c1c6..f9c0fbd934 100644 --- a/tests/qemuxml2xmloutdata/cputune.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/cputune.x86_64-latest.xml @@ -3,7 +3,8 @@ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> <memory unit='KiB'>219136</memory> <currentMemory unit='KiB'>219136</currentMemory> - <vcpu placement='static'>2</vcpu> + <vcpu placement='static'>4</vcpu> + <iothreads>4</iothreads> <cputune> <shares>2048</shares> <period>1000000</period> @@ -15,6 +16,13 @@ <vcpupin vcpu='0' cpuset='0'/> <vcpupin vcpu='1' cpuset='1'/> <emulatorpin cpuset='1'/> + <vcpusched vcpus='0' scheduler='batch'/> + <vcpusched vcpus='1' scheduler='fifo' priority='0'/> + <vcpusched vcpus='2' scheduler='rr' priority='1'/> + <vcpusched vcpus='3' scheduler='rr' priority='1'/> + <iothreadsched iothreads='1' scheduler='batch'/> + <iothreadsched iothreads='2' scheduler='rr' priority='0'/> + <iothreadsched iothreads='3' scheduler='batch'/> </cputune> <os> <type arch='x86_64' machine='pc'>hvm</type> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 0b66d2407f..84179196d4 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -572,8 +572,6 @@ mymain(void) DO_TEST_NOCAPS("blkiotune-device"); DO_TEST_CAPS_LATEST("cputune"); DO_TEST_CAPS_LATEST("cputune-zero-shares"); - DO_TEST_NOCAPS("cputune-iothreadsched"); - DO_TEST_NOCAPS("cputune-iothreadsched-zeropriority"); DO_TEST_CAPS_LATEST("cputune-numatune"); DO_TEST_CAPS_LATEST("vcpu-placement-static"); DO_TEST_CAPS_LATEST("cputune-cpuset-big-id"); @@ -583,7 +581,6 @@ mymain(void) DO_TEST_CAPS_LATEST("iothreads-ids"); DO_TEST_CAPS_LATEST("iothreads-ids-pool-sizes"); DO_TEST_CAPS_LATEST("iothreads-ids-partial"); - DO_TEST_NOCAPS("cputune-iothreads"); DO_TEST_CAPS_LATEST("iothreads-disk"); DO_TEST_CAPS_ARCH_LATEST("iothreads-disk-virtio-ccw", "s390x"); DO_TEST_CAPS_LATEST("iothreads-virtio-scsi-pci"); -- 2.39.2

Use latest caps for the tests even though the original test case didn't need any capabilities. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- ...ch.err => cputune-iothreadsched-toomuch.x86_64-latest.err} | 0 ...verlap.err => cputune-vcpusched-overlap.x86_64-latest.err} | 0 tests/qemuxml2argvtest.c | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) rename tests/qemuxml2argvdata/{cputune-iothreadsched-toomuch.err => cputune-iothreadsched-toomuch.x86_64-latest.err} (100%) rename tests/qemuxml2argvdata/{cputune-vcpusched-overlap.err => cputune-vcpusched-overlap.x86_64-latest.err} (100%) diff --git a/tests/qemuxml2argvdata/cputune-iothreadsched-toomuch.err b/tests/qemuxml2argvdata/cputune-iothreadsched-toomuch.x86_64-latest.err similarity index 100% rename from tests/qemuxml2argvdata/cputune-iothreadsched-toomuch.err rename to tests/qemuxml2argvdata/cputune-iothreadsched-toomuch.x86_64-latest.err diff --git a/tests/qemuxml2argvdata/cputune-vcpusched-overlap.err b/tests/qemuxml2argvdata/cputune-vcpusched-overlap.x86_64-latest.err similarity index 100% rename from tests/qemuxml2argvdata/cputune-vcpusched-overlap.err rename to tests/qemuxml2argvdata/cputune-vcpusched-overlap.x86_64-latest.err diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 3807aee947..81d0044f0f 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1962,8 +1962,8 @@ mymain(void) DO_TEST_NOCAPS("blkiotune-device"); DO_TEST_CAPS_LATEST("cputune"); DO_TEST_CAPS_LATEST("cputune-zero-shares"); - DO_TEST_PARSE_ERROR_NOCAPS("cputune-iothreadsched-toomuch"); - DO_TEST_PARSE_ERROR_NOCAPS("cputune-vcpusched-overlap"); + DO_TEST_CAPS_LATEST_PARSE_ERROR("cputune-iothreadsched-toomuch"); + DO_TEST_CAPS_LATEST_PARSE_ERROR("cputune-vcpusched-overlap"); DO_TEST_CAPS_LATEST("cputune-numatune"); DO_TEST_CAPS_LATEST("vcpu-placement-static"); DO_TEST_CAPS_LATEST("cputune-cpuset-big-id"); -- 2.39.2

Remove disks which are not necessary to demonstrate iothread config. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tests/qemuxml2argvdata/iothreads-disk.x86_64-latest.args | 5 +---- tests/qemuxml2argvdata/iothreads-disk.xml | 6 ------ .../iothreads-ids-partial.x86_64-latest.args | 3 --- tests/qemuxml2argvdata/iothreads-ids-partial.xml | 6 ------ .../iothreads-ids-pool-sizes.x86_64-latest.args | 3 --- tests/qemuxml2argvdata/iothreads-ids-pool-sizes.xml | 6 ------ tests/qemuxml2argvdata/iothreads-ids.x86_64-latest.args | 3 --- tests/qemuxml2argvdata/iothreads-ids.xml | 6 ------ .../iothreads-virtio-scsi-pci.x86_64-5.2.0.args | 5 +---- .../iothreads-virtio-scsi-pci.x86_64-latest.args | 5 +---- tests/qemuxml2argvdata/iothreads-virtio-scsi-pci.xml | 6 ------ tests/qemuxml2xmloutdata/iothreads-disk.x86_64-latest.xml | 6 ------ .../iothreads-ids-partial.x86_64-latest.xml | 6 ------ tests/qemuxml2xmloutdata/iothreads-ids.x86_64-latest.xml | 6 ------ .../iothreads-virtio-scsi-pci.x86_64-latest.xml | 6 ------ 15 files changed, 3 insertions(+), 75 deletions(-) diff --git a/tests/qemuxml2argvdata/iothreads-disk.x86_64-latest.args b/tests/qemuxml2argvdata/iothreads-disk.x86_64-latest.args index 1f18c97c97..02fb74d945 100644 --- a/tests/qemuxml2argvdata/iothreads-disk.x86_64-latest.args +++ b/tests/qemuxml2argvdata/iothreads-disk.x86_64-latest.args @@ -30,12 +30,9 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -no-acpi \ -boot strict=on \ -device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \ --blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-3-storage","auto-read-only":true,"discard":"unmap"}' \ --blockdev '{"node-name":"libvirt-3-format","read-only":false,"driver":"raw","file":"libvirt-3-storage"}' \ --device '{"driver":"ide-hd","bus":"ide.0","unit":0,"drive":"libvirt-3-format","id":"ide0-0-0","bootindex":1}' \ -blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/iothrtest1.img","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-2-format","read-only":false,"driver":"raw","file":"libvirt-2-storage"}' \ --device '{"driver":"virtio-blk-pci","iothread":"iothread1","bus":"pci.0","addr":"0x4","drive":"libvirt-2-format","id":"virtio-disk1"}' \ +-device '{"driver":"virtio-blk-pci","iothread":"iothread1","bus":"pci.0","addr":"0x4","drive":"libvirt-2-format","id":"virtio-disk1","bootindex":1}' \ -blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/iothrtest2.img","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ -device '{"driver":"virtio-blk-pci","iothread":"iothread2","bus":"pci.0","addr":"0x2","drive":"libvirt-1-format","id":"virtio-disk2"}' \ diff --git a/tests/qemuxml2argvdata/iothreads-disk.xml b/tests/qemuxml2argvdata/iothreads-disk.xml index 485ae3760e..ad0731c79c 100644 --- a/tests/qemuxml2argvdata/iothreads-disk.xml +++ b/tests/qemuxml2argvdata/iothreads-disk.xml @@ -15,12 +15,6 @@ <on_crash>destroy</on_crash> <devices> <emulator>/usr/bin/qemu-system-x86_64</emulator> - <disk type='block' device='disk'> - <driver name='qemu' type='raw'/> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> <disk type='file' device='disk'> <driver name='qemu' type='raw' iothread='1'/> <source file='/var/lib/libvirt/images/iothrtest1.img'/> diff --git a/tests/qemuxml2argvdata/iothreads-ids-partial.x86_64-latest.args b/tests/qemuxml2argvdata/iothreads-ids-partial.x86_64-latest.args index 857e343f8d..9a43da58e9 100644 --- a/tests/qemuxml2argvdata/iothreads-ids-partial.x86_64-latest.args +++ b/tests/qemuxml2argvdata/iothreads-ids-partial.x86_64-latest.args @@ -32,9 +32,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -no-acpi \ -boot strict=on \ -device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \ --blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ --blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ --device '{"driver":"ide-hd","bus":"ide.0","unit":0,"drive":"libvirt-1-format","id":"ide0-0-0","bootindex":1}' \ -audiodev '{"id":"audio1","driver":"none"}' \ -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on diff --git a/tests/qemuxml2argvdata/iothreads-ids-partial.xml b/tests/qemuxml2argvdata/iothreads-ids-partial.xml index ff759f2ce2..34761792f6 100644 --- a/tests/qemuxml2argvdata/iothreads-ids-partial.xml +++ b/tests/qemuxml2argvdata/iothreads-ids-partial.xml @@ -19,12 +19,6 @@ <on_crash>destroy</on_crash> <devices> <emulator>/usr/bin/qemu-system-x86_64</emulator> - <disk type='block' device='disk'> - <driver name='qemu' type='raw'/> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> <controller type='usb' index='0'/> <controller type='ide' index='0'/> <controller type='pci' index='0' model='pci-root'/> diff --git a/tests/qemuxml2argvdata/iothreads-ids-pool-sizes.x86_64-latest.args b/tests/qemuxml2argvdata/iothreads-ids-pool-sizes.x86_64-latest.args index 5429dedb4b..3f0e47fcfa 100644 --- a/tests/qemuxml2argvdata/iothreads-ids-pool-sizes.x86_64-latest.args +++ b/tests/qemuxml2argvdata/iothreads-ids-pool-sizes.x86_64-latest.args @@ -37,9 +37,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -device '{"driver":"pcie-root-port","port":9,"chassis":2,"id":"pci.2","bus":"pcie.0","addr":"0x1.0x1"}' \ -device '{"driver":"pcie-root-port","port":10,"chassis":3,"id":"pci.3","bus":"pcie.0","addr":"0x1.0x2"}' \ -device '{"driver":"qemu-xhci","id":"usb","bus":"pci.1","addr":"0x0"}' \ --blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ --blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ --device '{"driver":"virtio-blk-pci","bus":"pci.2","addr":"0x0","drive":"libvirt-1-format","id":"virtio-disk0","bootindex":1}' \ -audiodev '{"id":"audio1","driver":"none"}' \ -global ICH9-LPC.noreboot=off \ -watchdog-action reset \ diff --git a/tests/qemuxml2argvdata/iothreads-ids-pool-sizes.xml b/tests/qemuxml2argvdata/iothreads-ids-pool-sizes.xml index 284cded0b6..df4b291a7a 100644 --- a/tests/qemuxml2argvdata/iothreads-ids-pool-sizes.xml +++ b/tests/qemuxml2argvdata/iothreads-ids-pool-sizes.xml @@ -26,12 +26,6 @@ <on_crash>destroy</on_crash> <devices> <emulator>/usr/bin/qemu-system-x86_64</emulator> - <disk type='block' device='disk'> - <driver name='qemu' type='raw'/> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='vda' bus='virtio'/> - <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/> - </disk> <controller type='pci' index='0' model='pcie-root'/> <controller type='pci' index='1' model='pcie-root-port'> <model name='pcie-root-port'/> diff --git a/tests/qemuxml2argvdata/iothreads-ids.x86_64-latest.args b/tests/qemuxml2argvdata/iothreads-ids.x86_64-latest.args index dd4280ad96..9dc9c784a0 100644 --- a/tests/qemuxml2argvdata/iothreads-ids.x86_64-latest.args +++ b/tests/qemuxml2argvdata/iothreads-ids.x86_64-latest.args @@ -30,9 +30,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -no-acpi \ -boot strict=on \ -device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \ --blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ --blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ --device '{"driver":"ide-hd","bus":"ide.0","unit":0,"drive":"libvirt-1-format","id":"ide0-0-0","bootindex":1}' \ -audiodev '{"id":"audio1","driver":"none"}' \ -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on diff --git a/tests/qemuxml2argvdata/iothreads-ids.xml b/tests/qemuxml2argvdata/iothreads-ids.xml index aca3d7dece..e947d279ad 100644 --- a/tests/qemuxml2argvdata/iothreads-ids.xml +++ b/tests/qemuxml2argvdata/iothreads-ids.xml @@ -19,12 +19,6 @@ <on_crash>destroy</on_crash> <devices> <emulator>/usr/bin/qemu-system-x86_64</emulator> - <disk type='block' device='disk'> - <driver name='qemu' type='raw'/> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> <controller type='usb' index='0'/> <controller type='ide' index='0'/> <controller type='pci' index='0' model='pci-root'/> diff --git a/tests/qemuxml2argvdata/iothreads-virtio-scsi-pci.x86_64-5.2.0.args b/tests/qemuxml2argvdata/iothreads-virtio-scsi-pci.x86_64-5.2.0.args index a7878472ef..ac4e36a321 100644 --- a/tests/qemuxml2argvdata/iothreads-virtio-scsi-pci.x86_64-5.2.0.args +++ b/tests/qemuxml2argvdata/iothreads-virtio-scsi-pci.x86_64-5.2.0.args @@ -31,12 +31,9 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -boot strict=on \ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ -device virtio-scsi-pci,iothread=iothread2,id=scsi0,bus=pci.0,addr=0xb \ --blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-3-storage","auto-read-only":true,"discard":"unmap"}' \ --blockdev '{"node-name":"libvirt-3-format","read-only":false,"driver":"raw","file":"libvirt-3-storage"}' \ --device ide-hd,bus=ide.0,unit=0,drive=libvirt-3-format,id=ide0-0-0,bootindex=1 \ -blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/iothrtest1.img","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-2-format","read-only":false,"driver":"raw","file":"libvirt-2-storage"}' \ --device virtio-blk-pci,iothread=iothread1,bus=pci.0,addr=0x4,drive=libvirt-2-format,id=virtio-disk1 \ +-device virtio-blk-pci,iothread=iothread1,bus=pci.0,addr=0x4,drive=libvirt-2-format,id=virtio-disk1,bootindex=1 \ -blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/iothrtest2.img","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ -device scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,lun=3,device_id=drive-scsi0-0-0-3,drive=libvirt-1-format,id=scsi0-0-0-3 \ diff --git a/tests/qemuxml2argvdata/iothreads-virtio-scsi-pci.x86_64-latest.args b/tests/qemuxml2argvdata/iothreads-virtio-scsi-pci.x86_64-latest.args index 31f198ba3e..3b53b12eb2 100644 --- a/tests/qemuxml2argvdata/iothreads-virtio-scsi-pci.x86_64-latest.args +++ b/tests/qemuxml2argvdata/iothreads-virtio-scsi-pci.x86_64-latest.args @@ -31,12 +31,9 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -boot strict=on \ -device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \ -device '{"driver":"virtio-scsi-pci","iothread":"iothread2","id":"scsi0","bus":"pci.0","addr":"0xb"}' \ --blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-3-storage","auto-read-only":true,"discard":"unmap"}' \ --blockdev '{"node-name":"libvirt-3-format","read-only":false,"driver":"raw","file":"libvirt-3-storage"}' \ --device '{"driver":"ide-hd","bus":"ide.0","unit":0,"drive":"libvirt-3-format","id":"ide0-0-0","bootindex":1}' \ -blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/iothrtest1.img","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-2-format","read-only":false,"driver":"raw","file":"libvirt-2-storage"}' \ --device '{"driver":"virtio-blk-pci","iothread":"iothread1","bus":"pci.0","addr":"0x4","drive":"libvirt-2-format","id":"virtio-disk1"}' \ +-device '{"driver":"virtio-blk-pci","iothread":"iothread1","bus":"pci.0","addr":"0x4","drive":"libvirt-2-format","id":"virtio-disk1","bootindex":1}' \ -blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/iothrtest2.img","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ -device '{"driver":"scsi-hd","bus":"scsi0.0","channel":0,"scsi-id":0,"lun":3,"device_id":"drive-scsi0-0-0-3","drive":"libvirt-1-format","id":"scsi0-0-0-3"}' \ diff --git a/tests/qemuxml2argvdata/iothreads-virtio-scsi-pci.xml b/tests/qemuxml2argvdata/iothreads-virtio-scsi-pci.xml index 3651881e4b..4bd66d5065 100644 --- a/tests/qemuxml2argvdata/iothreads-virtio-scsi-pci.xml +++ b/tests/qemuxml2argvdata/iothreads-virtio-scsi-pci.xml @@ -15,12 +15,6 @@ <on_crash>destroy</on_crash> <devices> <emulator>/usr/bin/qemu-system-x86_64</emulator> - <disk type='block' device='disk'> - <driver name='qemu' type='raw'/> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> <disk type='file' device='disk'> <driver name='qemu' type='raw' iothread='1'/> <source file='/var/lib/libvirt/images/iothrtest1.img'/> diff --git a/tests/qemuxml2xmloutdata/iothreads-disk.x86_64-latest.xml b/tests/qemuxml2xmloutdata/iothreads-disk.x86_64-latest.xml index 2155971ef0..ae1da9ec2a 100644 --- a/tests/qemuxml2xmloutdata/iothreads-disk.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/iothreads-disk.x86_64-latest.xml @@ -18,12 +18,6 @@ <on_crash>destroy</on_crash> <devices> <emulator>/usr/bin/qemu-system-x86_64</emulator> - <disk type='block' device='disk'> - <driver name='qemu' type='raw'/> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> <disk type='file' device='disk'> <driver name='qemu' type='raw' iothread='1'/> <source file='/var/lib/libvirt/images/iothrtest1.img'/> diff --git a/tests/qemuxml2xmloutdata/iothreads-ids-partial.x86_64-latest.xml b/tests/qemuxml2xmloutdata/iothreads-ids-partial.x86_64-latest.xml index c40bac6643..2b82162081 100644 --- a/tests/qemuxml2xmloutdata/iothreads-ids-partial.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/iothreads-ids-partial.x86_64-latest.xml @@ -24,12 +24,6 @@ <on_crash>destroy</on_crash> <devices> <emulator>/usr/bin/qemu-system-x86_64</emulator> - <disk type='block' device='disk'> - <driver name='qemu' type='raw'/> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> <controller type='usb' index='0' model='piix3-uhci'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> diff --git a/tests/qemuxml2xmloutdata/iothreads-ids.x86_64-latest.xml b/tests/qemuxml2xmloutdata/iothreads-ids.x86_64-latest.xml index 4b55b08ac4..663b912519 100644 --- a/tests/qemuxml2xmloutdata/iothreads-ids.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/iothreads-ids.x86_64-latest.xml @@ -22,12 +22,6 @@ <on_crash>destroy</on_crash> <devices> <emulator>/usr/bin/qemu-system-x86_64</emulator> - <disk type='block' device='disk'> - <driver name='qemu' type='raw'/> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> <controller type='usb' index='0' model='piix3-uhci'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> diff --git a/tests/qemuxml2xmloutdata/iothreads-virtio-scsi-pci.x86_64-latest.xml b/tests/qemuxml2xmloutdata/iothreads-virtio-scsi-pci.x86_64-latest.xml index 5418a38a39..1b6895bb41 100644 --- a/tests/qemuxml2xmloutdata/iothreads-virtio-scsi-pci.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/iothreads-virtio-scsi-pci.x86_64-latest.xml @@ -18,12 +18,6 @@ <on_crash>destroy</on_crash> <devices> <emulator>/usr/bin/qemu-system-x86_64</emulator> - <disk type='block' device='disk'> - <driver name='qemu' type='raw'/> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> <disk type='file' device='disk'> <driver name='qemu' type='raw' iothread='1'/> <source file='/var/lib/libvirt/images/iothrtest1.img'/> -- 2.39.2

iothreads were introduced in qemu-2.0 and can't be compiled out thus we can always assume qemu supports them. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_capabilities.c | 2 +- src/qemu/qemu_driver.c | 21 +-------------------- src/qemu/qemu_process.c | 23 ----------------------- 3 files changed, 2 insertions(+), 44 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 3cb5785baa..6ba9b109a5 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -6403,7 +6403,7 @@ struct virQEMUCapsDomainFeatureCapabilityTuple { * capability XML. Use QEMU_CAPS_LAST to always enable a domain feature. * */ static const struct virQEMUCapsDomainFeatureCapabilityTuple domCapsTuples[] = { - { VIR_DOMAIN_CAPS_FEATURE_IOTHREADS, QEMU_CAPS_OBJECT_IOTHREAD }, + { VIR_DOMAIN_CAPS_FEATURE_IOTHREADS, QEMU_CAPS_LAST }, { VIR_DOMAIN_CAPS_FEATURE_VMCOREINFO, QEMU_CAPS_DEVICE_VMCOREINFO }, { VIR_DOMAIN_CAPS_FEATURE_GENID, QEMU_CAPS_DEVICE_VMGENID }, { VIR_DOMAIN_CAPS_FEATURE_BACKING_STORE_INPUT, QEMU_CAPS_LAST }, diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index d00eb1796f..fcec445f14 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4728,7 +4728,6 @@ static int qemuDomainGetIOThreadsLive(virDomainObj *vm, virDomainIOThreadInfoPtr **info) { - qemuDomainObjPrivate *priv; qemuMonitorIOThreadInfo **iothreads = NULL; virDomainIOThreadInfoPtr *info_ret = NULL; int niothreads = 0; @@ -4744,13 +4743,6 @@ qemuDomainGetIOThreadsLive(virDomainObj *vm, goto endjob; } - priv = vm->privateData; - if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_OBJECT_IOTHREAD)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("IOThreads not supported with this binary")); - goto endjob; - } - if ((ret = qemuDomainGetIOThreadsMon(vm, &iothreads, &niothreads)) < 0) goto endjob; @@ -5428,12 +5420,6 @@ qemuDomainChgIOThread(virQEMUDriver *driver, } if (def) { - if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_OBJECT_IOTHREAD)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("IOThreads not supported with this binary")); - goto endjob; - } - switch (action) { case VIR_DOMAIN_IOTHREAD_ACTION_ADD: if (virDomainDriverAddIOThreadCheck(def, iothread.iothread_id) < 0) @@ -18395,11 +18381,6 @@ struct qemuDomainGetStatsWorker { }; -static virQEMUCapsFlags queryIOThreadRequired[] = { - QEMU_CAPS_OBJECT_IOTHREAD, - QEMU_CAPS_LAST -}; - static virQEMUCapsFlags queryDirtyRateRequired[] = { QEMU_CAPS_QUERY_DIRTY_RATE, QEMU_CAPS_LAST @@ -18418,7 +18399,7 @@ static struct qemuDomainGetStatsWorker qemuDomainGetStatsWorkers[] = { { qemuDomainGetStatsInterface, VIR_DOMAIN_STATS_INTERFACE, false, NULL }, { qemuDomainGetStatsBlock, VIR_DOMAIN_STATS_BLOCK, true, NULL }, { qemuDomainGetStatsPerf, VIR_DOMAIN_STATS_PERF, false, NULL }, - { qemuDomainGetStatsIOThread, VIR_DOMAIN_STATS_IOTHREAD, true, queryIOThreadRequired }, + { qemuDomainGetStatsIOThread, VIR_DOMAIN_STATS_IOTHREAD, true, NULL }, { qemuDomainGetStatsMemory, VIR_DOMAIN_STATS_MEMORY, false, NULL }, { qemuDomainGetStatsDirtyRate, VIR_DOMAIN_STATS_DIRTYRATE, true, queryDirtyRateRequired }, { qemuDomainGetStatsVm, VIR_DOMAIN_STATS_VM, true, queryVmRequired }, diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 63d7e1138d..678a8f52f4 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -2350,11 +2350,6 @@ qemuProcessDetectIOThreadPIDs(virDomainObj *vm, int ret = -1; size_t i; - if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_OBJECT_IOTHREAD)) { - ret = 0; - goto cleanup; - } - /* Get the list of IOThreads from qemu */ if (qemuDomainObjEnterMonitorAsync(vm, asyncJob) < 0) goto cleanup; @@ -5365,21 +5360,6 @@ qemuProcessStartValidateGraphics(virDomainObj *vm) } -static int -qemuProcessStartValidateIOThreads(virDomainObj *vm, - virQEMUCaps *qemuCaps) -{ - if (vm->def->niothreadids > 0 && - !virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_IOTHREAD)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("IOThreads not supported for this QEMU")); - return -1; - } - - return 0; -} - - static int qemuProcessStartValidateShmem(virDomainObj *vm) { @@ -5554,9 +5534,6 @@ qemuProcessStartValidate(virQEMUDriver *driver, if (qemuProcessStartValidateGraphics(vm) < 0) return -1; - if (qemuProcessStartValidateIOThreads(vm, qemuCaps) < 0) - return -1; - if (qemuProcessStartValidateShmem(vm) < 0) return -1; -- 2.39.2

Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_capabilities.c | 3 +-- src/qemu/qemu_capabilities.h | 2 +- tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml | 1 - tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_5.1.0.sparc.xml | 1 - tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_5.2.0.riscv64.xml | 1 - tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_7.1.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_8.0.0.riscv64.xml | 1 - tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml | 1 - 32 files changed, 2 insertions(+), 33 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 6ba9b109a5..dfcd573b5e 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -308,7 +308,7 @@ VIR_ENUM_IMPL(virQEMUCaps, "usb-audio", /* QEMU_CAPS_OBJECT_USB_AUDIO */ "rtc-reset-reinjection", /* QEMU_CAPS_RTC_RESET_REINJECTION */ "splash-timeout", /* X_QEMU_CAPS_SPLASH_TIMEOUT */ - "iothread", /* QEMU_CAPS_OBJECT_IOTHREAD */ + "iothread", /* X_QEMU_CAPS_OBJECT_IOTHREAD */ /* 175 */ "migrate-rdma", /* QEMU_CAPS_MIGRATE_RDMA */ @@ -1287,7 +1287,6 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = { { "pvpanic", QEMU_CAPS_DEVICE_PANIC }, { "usb-kbd", QEMU_CAPS_DEVICE_USB_KBD }, { "usb-audio", QEMU_CAPS_OBJECT_USB_AUDIO }, - { "iothread", QEMU_CAPS_OBJECT_IOTHREAD}, { "ivshmem", QEMU_CAPS_DEVICE_IVSHMEM }, { "pc-dimm", QEMU_CAPS_DEVICE_PC_DIMM }, { "pci-serial", QEMU_CAPS_DEVICE_PCI_SERIAL }, diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index d049f79dd9..d778f0f60d 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -286,7 +286,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ QEMU_CAPS_OBJECT_USB_AUDIO, /* usb-audio device support */ QEMU_CAPS_RTC_RESET_REINJECTION, /* rtc-reset-reinjection monitor command */ X_QEMU_CAPS_SPLASH_TIMEOUT, /* -boot splash-time */ - QEMU_CAPS_OBJECT_IOTHREAD, /* -object iothread */ + X_QEMU_CAPS_OBJECT_IOTHREAD, /* -object iothread */ /* 175 */ QEMU_CAPS_MIGRATE_RDMA, /* have rdma migration */ diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml index e1a6301897..7fc098125e 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml @@ -44,7 +44,6 @@ <flag name='enable-fips'/> <flag name='usb-kbd'/> <flag name='usb-audio'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml index 94dcdbc395..e1eac1f12f 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml @@ -43,7 +43,6 @@ <flag name='enable-fips'/> <flag name='usb-kbd'/> <flag name='usb-audio'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml b/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml index 08fdaaed97..1deef79501 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml @@ -22,7 +22,6 @@ <flag name='pci-bridge'/> <flag name='vfio-pci'/> <flag name='enable-fips'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='aes-key-wrap'/> <flag name='dea-key-wrap'/> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml index b039145384..833efba5db 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml @@ -58,7 +58,6 @@ <flag name='usb-kbd'/> <flag name='usb-audio'/> <flag name='rtc-reset-reinjection'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml index f83ee7050b..cb7df84e52 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml @@ -46,7 +46,6 @@ <flag name='enable-fips'/> <flag name='usb-kbd'/> <flag name='usb-audio'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml index 08b713d0f9..3d4566d6eb 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml @@ -44,7 +44,6 @@ <flag name='enable-fips'/> <flag name='usb-kbd'/> <flag name='usb-audio'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml index b9bf47f08d..a70fb22742 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml @@ -47,7 +47,6 @@ <flag name='enable-fips'/> <flag name='usb-kbd'/> <flag name='usb-audio'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml index 44044c4cb0..c698323830 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml @@ -58,7 +58,6 @@ <flag name='usb-kbd'/> <flag name='usb-audio'/> <flag name='rtc-reset-reinjection'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_5.1.0.sparc.xml b/tests/qemucapabilitiesdata/caps_5.1.0.sparc.xml index a791a84940..208e2e01cb 100644 --- a/tests/qemucapabilitiesdata/caps_5.1.0.sparc.xml +++ b/tests/qemucapabilitiesdata/caps_5.1.0.sparc.xml @@ -15,7 +15,6 @@ <flag name='rng-random'/> <flag name='rng-egd'/> <flag name='enable-fips'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='spice-gl'/> <flag name='query-hotpluggable-cpus'/> diff --git a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml index c1868ca769..3471678b3b 100644 --- a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml @@ -58,7 +58,6 @@ <flag name='usb-kbd'/> <flag name='usb-audio'/> <flag name='rtc-reset-reinjection'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml index 4788398af7..9f4ae9d195 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml @@ -45,7 +45,6 @@ <flag name='ich9-intel-hda'/> <flag name='usb-kbd'/> <flag name='usb-audio'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml index 2f2620727c..4b9b000329 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml @@ -43,7 +43,6 @@ <flag name='ich9-intel-hda'/> <flag name='usb-kbd'/> <flag name='usb-audio'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.riscv64.xml b/tests/qemucapabilitiesdata/caps_5.2.0.riscv64.xml index 484a073da9..37a91cf918 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.riscv64.xml @@ -46,7 +46,6 @@ <flag name='ich9-intel-hda'/> <flag name='usb-kbd'/> <flag name='usb-audio'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml b/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml index 5a711f04f9..997bb7847e 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml @@ -21,7 +21,6 @@ <flag name='virtio-ccw'/> <flag name='pci-bridge'/> <flag name='vfio-pci'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='aes-key-wrap'/> <flag name='dea-key-wrap'/> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml index 979feb47b3..bf82fdf5ed 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml @@ -57,7 +57,6 @@ <flag name='usb-kbd'/> <flag name='usb-audio'/> <flag name='rtc-reset-reinjection'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml index 8238fb5d16..e71caaa8b8 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml @@ -44,7 +44,6 @@ <flag name='ich9-intel-hda'/> <flag name='usb-kbd'/> <flag name='usb-audio'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml b/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml index 747fa71bcb..a8a1a5a57b 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml @@ -21,7 +21,6 @@ <flag name='virtio-ccw'/> <flag name='pci-bridge'/> <flag name='vfio-pci'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='aes-key-wrap'/> <flag name='dea-key-wrap'/> diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml index 7a592ff6aa..c692e8dd5c 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml @@ -56,7 +56,6 @@ <flag name='usb-kbd'/> <flag name='usb-audio'/> <flag name='rtc-reset-reinjection'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml index 4da1d42276..e0e92f5031 100644 --- a/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml @@ -56,7 +56,6 @@ <flag name='usb-kbd'/> <flag name='usb-audio'/> <flag name='rtc-reset-reinjection'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml index 33c9982bd1..e9e8769044 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml @@ -49,7 +49,6 @@ <flag name='ich9-intel-hda'/> <flag name='usb-kbd'/> <flag name='usb-audio'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml index c485733d83..7b1a831bc5 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml @@ -43,7 +43,6 @@ <flag name='ich9-intel-hda'/> <flag name='usb-kbd'/> <flag name='usb-audio'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml index 1f6f16bd4f..85edc253da 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml @@ -56,7 +56,6 @@ <flag name='usb-kbd'/> <flag name='usb-audio'/> <flag name='rtc-reset-reinjection'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml index 6517cd71f6..be8665a91f 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml @@ -49,7 +49,6 @@ <flag name='ich9-intel-hda'/> <flag name='usb-kbd'/> <flag name='usb-audio'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml index 8dae2495e4..e9e9277546 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml @@ -49,7 +49,6 @@ <flag name='ich9-intel-hda'/> <flag name='usb-kbd'/> <flag name='usb-audio'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml index 90b83f2995..3ded9454a4 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml @@ -56,7 +56,6 @@ <flag name='usb-kbd'/> <flag name='usb-audio'/> <flag name='rtc-reset-reinjection'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_7.1.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_7.1.0.ppc64.xml index e0e9a4693f..6791d73081 100644 --- a/tests/qemucapabilitiesdata/caps_7.1.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_7.1.0.ppc64.xml @@ -48,7 +48,6 @@ <flag name='ich9-intel-hda'/> <flag name='usb-kbd'/> <flag name='usb-audio'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml index 1f05dd4ae3..54a8969ff5 100644 --- a/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml @@ -56,7 +56,6 @@ <flag name='usb-kbd'/> <flag name='usb-audio'/> <flag name='rtc-reset-reinjection'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml index 13f7b66b69..a79c8526af 100644 --- a/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml @@ -56,7 +56,6 @@ <flag name='usb-kbd'/> <flag name='usb-audio'/> <flag name='rtc-reset-reinjection'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> diff --git a/tests/qemucapabilitiesdata/caps_8.0.0.riscv64.xml b/tests/qemucapabilitiesdata/caps_8.0.0.riscv64.xml index 751320433a..46e7be8cfb 100644 --- a/tests/qemucapabilitiesdata/caps_8.0.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_8.0.0.riscv64.xml @@ -41,7 +41,6 @@ <flag name='ich9-intel-hda'/> <flag name='usb-kbd'/> <flag name='usb-audio'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='pci-serial'/> diff --git a/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml index ce051d3f1c..d080893c12 100644 --- a/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml @@ -55,7 +55,6 @@ <flag name='usb-kbd'/> <flag name='usb-audio'/> <flag name='rtc-reset-reinjection'/> - <flag name='iothread'/> <flag name='migrate-rdma'/> <flag name='VGA.vgamem_mb'/> <flag name='vmware-svga.vgamem_mb'/> -- 2.39.2

iothread polling mode and the corresponding properties were added in qemu-2.9 ( 0d9d86fb4df4882b ). We can always assume that qemu supports them. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_driver.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index fcec445f14..f43d95adcb 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -5055,12 +5055,6 @@ qemuDomainHotplugModIOThread(virDomainObj *vm, qemuDomainObjPrivate *priv = vm->privateData; int rc; - if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_IOTHREAD_POLLING)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("IOThreads polling is not supported for this QEMU")); - return -1; - } - qemuDomainObjEnterMonitor(vm); rc = qemuMonitorSetIOThread(priv->mon, &iothread); -- 2.39.2

We now always assume support for polling mode of iothreads. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_capabilities.c | 3 +-- src/qemu/qemu_capabilities.h | 2 +- tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml | 1 - tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_5.1.0.sparc.xml | 1 - tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_5.2.0.riscv64.xml | 1 - tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_7.1.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_8.0.0.riscv64.xml | 1 - tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml | 1 - 32 files changed, 2 insertions(+), 33 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index dfcd573b5e..39d3ea3e97 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -511,7 +511,7 @@ VIR_ENUM_IMPL(virQEMUCaps, "zpci", /* QEMU_CAPS_DEVICE_ZPCI */ "memory-backend-memfd", /* QEMU_CAPS_OBJECT_MEMORY_MEMFD */ "memory-backend-memfd.hugetlb", /* QEMU_CAPS_OBJECT_MEMORY_MEMFD_HUGETLB */ - "iothread.poll-max-ns", /* QEMU_CAPS_IOTHREAD_POLLING */ + "iothread.poll-max-ns", /* X_QEMU_CAPS_IOTHREAD_POLLING */ /* 320 */ "machine.pseries.cap-nested-hv", /* QEMU_CAPS_MACHINE_PSERIES_CAP_NESTED_HV */ @@ -1569,7 +1569,6 @@ static struct virQEMUCapsStringFlags virQEMUCapsQMPSchemaQueries[] = { { "query-display-options/ret-type/+egl-headless/rendernode", QEMU_CAPS_EGL_HEADLESS_RENDERNODE }, { "query-display-options/ret-type/+sdl", QEMU_CAPS_SDL }, { "query-display-options/ret-type/+egl-headless", QEMU_CAPS_EGL_HEADLESS }, - { "query-iothreads/ret-type/poll-max-ns", QEMU_CAPS_IOTHREAD_POLLING }, { "query-hotpluggable-cpus/ret-type/props/die-id", QEMU_CAPS_SMP_DIES }, { "query-named-block-nodes/arg-type/flat", QEMU_CAPS_QMP_QUERY_NAMED_BLOCK_NODES_FLAT }, { "screendump/arg-type/device", QEMU_CAPS_SCREENDUMP_DEVICE }, diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index d778f0f60d..fd2f237aaf 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -490,7 +490,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ QEMU_CAPS_DEVICE_ZPCI, /* -device zpci */ QEMU_CAPS_OBJECT_MEMORY_MEMFD, /* -object memory-backend-memfd */ QEMU_CAPS_OBJECT_MEMORY_MEMFD_HUGETLB, /* -object memory-backend-memfd.hugetlb */ - QEMU_CAPS_IOTHREAD_POLLING, /* -object iothread.poll-max-ns */ + X_QEMU_CAPS_IOTHREAD_POLLING, /* -object iothread.poll-max-ns */ /* 320 */ QEMU_CAPS_MACHINE_PSERIES_CAP_NESTED_HV, /* -machine pseries.cap-nested-hv */ diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml index 7fc098125e..3a082a8fee 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml @@ -87,7 +87,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> <flag name='virtio-pci-non-transitional'/> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml index e1eac1f12f..de9c102caa 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml @@ -87,7 +87,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='machine.pseries.cap-nested-hv'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml b/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml index 1deef79501..cd13201c68 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml @@ -56,7 +56,6 @@ <flag name='zpci'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> <flag name='virtio-pci-non-transitional'/> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml index 833efba5db..5d36e7e49e 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml @@ -121,7 +121,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> <flag name='nvdimm.unarmed'/> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml index cb7df84e52..88f3c0a9fe 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml @@ -90,7 +90,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> <flag name='virtio-pci-non-transitional'/> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml index 3d4566d6eb..9e1147e302 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml @@ -90,7 +90,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='machine.pseries.cap-nested-hv'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml index a70fb22742..f306bc83cd 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml @@ -86,7 +86,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> <flag name='virtio-pci-non-transitional'/> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml index c698323830..dd79dc309e 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml @@ -121,7 +121,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> <flag name='nvdimm.unarmed'/> diff --git a/tests/qemucapabilitiesdata/caps_5.1.0.sparc.xml b/tests/qemucapabilitiesdata/caps_5.1.0.sparc.xml index 208e2e01cb..68728321eb 100644 --- a/tests/qemucapabilitiesdata/caps_5.1.0.sparc.xml +++ b/tests/qemucapabilitiesdata/caps_5.1.0.sparc.xml @@ -27,7 +27,6 @@ <flag name='egl-headless'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> <flag name='nbd-bitmap'/> diff --git a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml index 3471678b3b..6e218b0c48 100644 --- a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml @@ -120,7 +120,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> <flag name='nvdimm.unarmed'/> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml index 9f4ae9d195..ef93ea921c 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml @@ -89,7 +89,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> <flag name='nvdimm.unarmed'/> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml index 4b9b000329..9a571817c6 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml @@ -88,7 +88,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='machine.pseries.cap-nested-hv'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.riscv64.xml b/tests/qemucapabilitiesdata/caps_5.2.0.riscv64.xml index 37a91cf918..ff3a4a7168 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.riscv64.xml @@ -84,7 +84,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> <flag name='virtio-pci-non-transitional'/> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml b/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml index 997bb7847e..ac51cd4c1a 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml @@ -54,7 +54,6 @@ <flag name='zpci'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> <flag name='virtio-pci-non-transitional'/> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml index bf82fdf5ed..f3c77ac1bd 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml @@ -120,7 +120,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> <flag name='nvdimm.unarmed'/> diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml index e71caaa8b8..f1a15943df 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml @@ -90,7 +90,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='nvdimm.unarmed'/> <flag name='virtio-pci-non-transitional'/> diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml b/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml index a8a1a5a57b..af03684556 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml @@ -54,7 +54,6 @@ <flag name='zpci'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='virtio-pci-non-transitional'/> <flag name='nbd-bitmap'/> diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml index c692e8dd5c..067f6632a6 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml @@ -120,7 +120,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> <flag name='nvdimm.unarmed'/> diff --git a/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml index e0e92f5031..be0f713798 100644 --- a/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml @@ -118,7 +118,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> <flag name='nvdimm.unarmed'/> diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml index e9e8769044..2b28a59746 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml @@ -97,7 +97,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='nvdimm.unarmed'/> <flag name='virtio-pci-non-transitional'/> diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml index 7b1a831bc5..86810b7c0d 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml @@ -87,7 +87,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='machine.pseries.cap-nested-hv'/> <flag name='nvdimm.unarmed'/> <flag name='virtio-pci-non-transitional'/> diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml index 85edc253da..9b2242d7c2 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml @@ -118,7 +118,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> <flag name='nvdimm.unarmed'/> diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml index be8665a91f..4eb750e393 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml @@ -97,7 +97,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='nvdimm.unarmed'/> <flag name='virtio-pci-non-transitional'/> diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml index e9e9277546..361fa46ed7 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml @@ -94,7 +94,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='machine.pseries.cap-nested-hv'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml index 3ded9454a4..3439050911 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml @@ -118,7 +118,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> <flag name='nvdimm.unarmed'/> diff --git a/tests/qemucapabilitiesdata/caps_7.1.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_7.1.0.ppc64.xml index 6791d73081..7902c22871 100644 --- a/tests/qemucapabilitiesdata/caps_7.1.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_7.1.0.ppc64.xml @@ -92,7 +92,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='machine.pseries.cap-nested-hv'/> <flag name='memory-backend-file.pmem'/> <flag name='nvdimm.unarmed'/> diff --git a/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml index 54a8969ff5..d9028b1c37 100644 --- a/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml @@ -118,7 +118,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> <flag name='nvdimm.unarmed'/> diff --git a/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml index a79c8526af..46b1d816b5 100644 --- a/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml @@ -118,7 +118,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> <flag name='nvdimm.unarmed'/> diff --git a/tests/qemucapabilitiesdata/caps_8.0.0.riscv64.xml b/tests/qemucapabilitiesdata/caps_8.0.0.riscv64.xml index 46e7be8cfb..e14eb9a665 100644 --- a/tests/qemucapabilitiesdata/caps_8.0.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_8.0.0.riscv64.xml @@ -77,7 +77,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='memory-backend-file.pmem'/> <flag name='virtio-pci-non-transitional'/> <flag name='nbd-bitmap'/> diff --git a/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml index d080893c12..c464071003 100644 --- a/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml @@ -117,7 +117,6 @@ <flag name='vfio-pci.display'/> <flag name='memory-backend-memfd'/> <flag name='memory-backend-memfd.hugetlb'/> - <flag name='iothread.poll-max-ns'/> <flag name='egl-headless.rendernode'/> <flag name='memory-backend-file.pmem'/> <flag name='nvdimm.unarmed'/> -- 2.39.2

On a Thursday in 2023, Peter Krempa wrote:
We now always assume support for polling mode of iothreads.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_capabilities.c | 3 +-- src/qemu/qemu_capabilities.h | 2 +- tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml | 1 - tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_5.1.0.sparc.xml | 1 - tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_5.2.0.riscv64.xml | 1 - tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_7.1.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_8.0.0.riscv64.xml | 1 - tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml | 1 - 32 files changed, 2 insertions(+), 33 deletions(-)
For all patches up to [0] here: Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano [0] or down to, depending on which way you're facing

Currently we allow configuring the 'poll-max-ns', 'poll-grow', and 'poll-shrink' parameters of qemu iothreads only during runtime and they are not persisted. Add XML machinery to persist them. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- docs/formatdomain.rst | 11 ++++- src/conf/domain_conf.c | 41 ++++++++++++++++++- src/conf/domain_conf.h | 7 ++++ src/conf/schemas/domaincommon.rng | 19 +++++++++ .../iothreads-ids-pool-sizes.xml | 12 ++++-- 5 files changed, 85 insertions(+), 5 deletions(-) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index 638768c18d..eff17c1532 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -730,7 +730,9 @@ host/guest with many LUNs. :since:`Since 1.2.8 (QEMU only)` <iothread id="2"/> <iothread id="4"/> <iothread id="6"/> - <iothread id="8" thread_pool_min="2" thread_pool_max="32"/> + <iothread id="8" thread_pool_min="2" thread_pool_max="32"> + <poll max='123' grow='456' shrink='789'/> + </iothread> </iothreadids> <defaultiothread thread_pool_min="8" thread_pool_max="16"/> ... @@ -756,6 +758,13 @@ host/guest with many LUNs. :since:`Since 1.2.8 (QEMU only)` ``thread_pool_max`` which allow setting lower and upper boundary for number of worker threads for given IOThread. While the former can be value of zero, the latter can't. :since:`Since 8.5.0` + :since:`Since 9.1.0` an optional sub-element ``poll`` with can be used to + override the hypervisor-default interval of polling for the iothread before + it switches back to events. The optional attribute ``max`` sets the maximum + time polling should be used in nanoseconds. Setting ``max`` to ``0`` disables + polling. Attributes ``grow`` and ``shrink`` override (or disable when set to + ``0`` the default steps for increasing/decreasing the polling interval if + the set interval is deemed insufficient or extensive. ``defaultiothread`` This element represents the default event loop within hypervisor, where I/O requests from devices not assigned to a specific IOThread are processed. diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index ad2b44b610..9426d55f8d 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -15779,6 +15779,7 @@ static virDomainIOThreadIDDef * virDomainIOThreadIDDefParseXML(xmlNodePtr node) { g_autoptr(virDomainIOThreadIDDef) iothrid = virDomainIOThreadIDDefNew(); + xmlNodePtr pollNode; if (virXMLPropUInt(node, "id", 10, VIR_XML_PROP_REQUIRED | VIR_XML_PROP_NONZERO, @@ -15795,6 +15796,28 @@ virDomainIOThreadIDDefParseXML(xmlNodePtr node) &iothrid->thread_pool_max, -1) < 0) return NULL; + if ((pollNode = virXMLNodeGetSubelement(node, "poll"))) { + int rc; + + if ((rc = virXMLPropULongLong(pollNode, "max", 10, VIR_XML_PROP_NONE, + &iothrid->poll_max_ns)) < 0) + return NULL; + + iothrid->set_poll_max_ns = rc == 1; + + if ((rc = virXMLPropUInt(pollNode, "grow", 10, VIR_XML_PROP_NONE, + &iothrid->poll_grow)) < 0) + return NULL; + + iothrid->set_poll_grow = rc == 1; + + if ((rc = virXMLPropUInt(pollNode, "shrink", 10, VIR_XML_PROP_NONE, + &iothrid->poll_shrink)) < 0) + return NULL; + + iothrid->set_poll_shrink = rc == 1; + } + return g_steal_pointer(&iothrid); } @@ -26655,6 +26678,9 @@ virDomainDefIothreadShouldFormat(const virDomainDef *def) for (i = 0; i < def->niothreadids; i++) { if (!def->iothreadids[i]->autofill || + def->iothreadids[i]->set_poll_max_ns || + def->iothreadids[i]->set_poll_grow || + def->iothreadids[i]->set_poll_shrink || def->iothreadids[i]->thread_pool_min >= 0 || def->iothreadids[i]->thread_pool_max >= 0) return true; @@ -26703,6 +26729,8 @@ virDomainDefIOThreadsFormat(virBuffer *buf, for (i = 0; i < def->niothreadids; i++) { virDomainIOThreadIDDef *iothread = def->iothreadids[i]; g_auto(virBuffer) attrBuf = VIR_BUFFER_INITIALIZER; + g_auto(virBuffer) iothreadChildBuf = VIR_BUFFER_INIT_CHILD(&childrenBuf); + g_auto(virBuffer) pollAttrBuf = VIR_BUFFER_INITIALIZER; virBufferAsprintf(&attrBuf, " id='%u'", iothread->iothread_id); @@ -26717,7 +26745,18 @@ virDomainDefIOThreadsFormat(virBuffer *buf, iothread->thread_pool_max); } - virXMLFormatElement(&childrenBuf, "iothread", &attrBuf, NULL); + if (iothread->set_poll_max_ns) + virBufferAsprintf(&pollAttrBuf, " max='%llu'", iothread->poll_max_ns); + + if (iothread->set_poll_grow) + virBufferAsprintf(&pollAttrBuf, " grow='%u'", iothread->poll_grow); + + if (iothread->set_poll_shrink) + virBufferAsprintf(&pollAttrBuf, " shrink='%u'", iothread->poll_shrink); + + virXMLFormatElement(&iothreadChildBuf, "poll", &pollAttrBuf, NULL); + + virXMLFormatElement(&childrenBuf, "iothread", &attrBuf, &iothreadChildBuf); } virXMLFormatElement(buf, "iothreadids", NULL, &childrenBuf); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 2a8ad17f44..f6dade62fc 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2710,6 +2710,13 @@ struct _virDomainIOThreadIDDef { virDomainThreadSchedParam sched; + unsigned long long poll_max_ns; + bool set_poll_max_ns; + unsigned int poll_grow; + bool set_poll_grow; + unsigned int poll_shrink; + bool set_poll_shrink; + int thread_pool_min; int thread_pool_max; }; diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng index ab4886b783..5a1d79672f 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -879,6 +879,25 @@ <ref name="unsignedInt"/> </attribute> </optional> + <optional> + <element name="poll"> + <optional> + <attribute name="max"> + <ref name="unsignedInt"/> + </attribute> + </optional> + <optional> + <attribute name="grow"> + <ref name="unsignedInt"/> + </attribute> + </optional> + <optional> + <attribute name="shrink"> + <ref name="unsignedInt"/> + </attribute> + </optional> + </element> + </optional> </element> </zeroOrMore> </element> diff --git a/tests/qemuxml2argvdata/iothreads-ids-pool-sizes.xml b/tests/qemuxml2argvdata/iothreads-ids-pool-sizes.xml index df4b291a7a..63fb4a52f6 100644 --- a/tests/qemuxml2argvdata/iothreads-ids-pool-sizes.xml +++ b/tests/qemuxml2argvdata/iothreads-ids-pool-sizes.xml @@ -7,9 +7,15 @@ <iothreads>5</iothreads> <iothreadids> <iothread id='2' thread_pool_min='0' thread_pool_max='60'/> - <iothread id='4' thread_pool_min='1' thread_pool_max='1'/> - <iothread id='1'/> - <iothread id='3'/> + <iothread id='4' thread_pool_min='1' thread_pool_max='1'> + <poll max='123'/> + </iothread> + <iothread id='1'> + <poll grow='456' shrink='789'/> + </iothread> + <iothread id='3'> + <poll max='123000' grow='456' shrink='789'/> + </iothread> <iothread id='5'/> </iothreadids> <defaultiothread thread_pool_min='8' thread_pool_max='16'/> -- 2.39.2

Implement the support for the persisted poll parameters and remove restrictions on saving config when modifying them during runtime. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_command.c | 18 +++++++++++ src/qemu/qemu_driver.c | 30 ++++++++++--------- ...othreads-ids-pool-sizes.x86_64-latest.args | 6 ++-- 3 files changed, 37 insertions(+), 17 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 4839d45a34..cc476addce 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -7167,6 +7167,24 @@ qemuBuildIOThreadCommandLine(virCommand *cmd, NULL) < 0) return -1; + if (iothread->set_poll_max_ns && + virJSONValueObjectAdd(&props, + "U:poll-max-ns", iothread->poll_max_ns, + NULL) < 0) + return -1; + + if (iothread->set_poll_grow && + virJSONValueObjectAdd(&props, + "u:poll-grow", iothread->poll_grow, + NULL) < 0) + return -1; + + if (iothread->set_poll_shrink && + virJSONValueObjectAdd(&props, + "U:poll-shrink", iothread->poll_shrink, + NULL) < 0) + return -1; + if (qemuBuildObjectCommandlineFromJSON(cmd, props, qemuCaps) < 0) return -1; } diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index f43d95adcb..e7af9887df 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -5068,23 +5068,30 @@ qemuDomainHotplugModIOThread(virDomainObj *vm, } -static int +static void qemuDomainHotplugModIOThreadIDDef(virDomainIOThreadIDDef *def, qemuMonitorIOThreadInfo mondef) { - /* These have no representation in domain XML */ - if (mondef.set_poll_grow || - mondef.set_poll_max_ns || - mondef.set_poll_shrink) - return -1; + if (mondef.set_poll_max_ns) { + def->poll_max_ns = mondef.poll_max_ns; + def->set_poll_max_ns = true; + } + + if (mondef.set_poll_grow) { + def->poll_grow = mondef.poll_grow; + def->set_poll_grow = true; + } + + if (mondef.set_poll_shrink) { + def->poll_shrink = mondef.poll_shrink; + def->set_poll_shrink = true; + } if (mondef.set_thread_pool_min) def->thread_pool_min = mondef.thread_pool_min; if (mondef.set_thread_pool_max) def->thread_pool_max = mondef.thread_pool_max; - - return 0; } @@ -5403,12 +5410,7 @@ qemuDomainChgIOThread(virQEMUDriver *driver, if (qemuDomainIOThreadValidate(iothreaddef, iothread, false) < 0) goto endjob; - if (qemuDomainHotplugModIOThreadIDDef(iothreaddef, iothread) < 0) { - virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", - _("configuring persistent polling values is not supported")); - goto endjob; - } - + qemuDomainHotplugModIOThreadIDDef(iothreaddef, iothread); break; } } diff --git a/tests/qemuxml2argvdata/iothreads-ids-pool-sizes.x86_64-latest.args b/tests/qemuxml2argvdata/iothreads-ids-pool-sizes.x86_64-latest.args index 3f0e47fcfa..2008eb848f 100644 --- a/tests/qemuxml2argvdata/iothreads-ids-pool-sizes.x86_64-latest.args +++ b/tests/qemuxml2argvdata/iothreads-ids-pool-sizes.x86_64-latest.args @@ -18,9 +18,9 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -overcommit mem-lock=off \ -smp 6,sockets=6,cores=1,threads=1 \ -object '{"qom-type":"iothread","id":"iothread2","thread-pool-min":0,"thread-pool-max":60}' \ --object '{"qom-type":"iothread","id":"iothread4","thread-pool-min":1,"thread-pool-max":1}' \ --object '{"qom-type":"iothread","id":"iothread1"}' \ --object '{"qom-type":"iothread","id":"iothread3"}' \ +-object '{"qom-type":"iothread","id":"iothread4","thread-pool-min":1,"thread-pool-max":1,"poll-max-ns":123}' \ +-object '{"qom-type":"iothread","id":"iothread1","poll-grow":456,"poll-shrink":789}' \ +-object '{"qom-type":"iothread","id":"iothread3","poll-max-ns":123000,"poll-grow":456,"poll-shrink":789}' \ -object '{"qom-type":"iothread","id":"iothread5"}' \ -object '{"qom-type":"main-loop","id":"main-loop","thread-pool-min":8,"thread-pool-max":16}' \ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ -- 2.39.2

Indent the example XML block so that it belongs to the paragraph talking about it. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- docs/formatdomain.rst | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index eff17c1532..d831c1e527 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -3256,28 +3256,26 @@ paravirtualized driver is specified via the ``disk`` element. to the ``qemu`` `qcow2 cache docs <https://git.qemu.org/?p=qemu.git;a=blob;f=docs/qcow2-cache.txt>`__ - **Example:** - -:: - - <disk type='file' device='disk'> - <driver name='qemu' type='qcow2'> - <metadata_cache> - <max_size unit='bytes'>1234</max_size> - </metadata_cache> - </driver> - <source file='/var/lib/libvirt/images/domain.qcow'/> - <backingStore type='file'> - <format type='qcow2'> - <metadata_cache> - <max_size unit='bytes'>1234</max_size> - </metadata_cache> - </format> - <source file='/var/lib/libvirt/images/snapshot.qcow'/> - <backingStore/> - </backingStore> - <target dev='vdd' bus='virtio'/> - </disk> + **Example**:: + + <disk type='file' device='disk'> + <driver name='qemu' type='qcow2'> + <metadata_cache> + <max_size unit='bytes'>1234</max_size> + </metadata_cache> + </driver> + <source file='/var/lib/libvirt/images/domain.qcow'/> + <backingStore type='file'> + <format type='qcow2'> + <metadata_cache> + <max_size unit='bytes'>1234</max_size> + </metadata_cache> + </format> + <source file='/var/lib/libvirt/images/snapshot.qcow'/> + <backingStore/> + </backingStore> + <target dev='vdd' bus='virtio'/> + </disk> ``backenddomain`` The optional ``backenddomain`` element allows specifying a backend domain -- 2.39.2

The new helper is similar to virXPathNode list but for cases where we want to get subelements directly rather than using XPath. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/libvirt_private.syms | 1 + src/util/virxml.c | 29 +++++++++++++++++++++++++++++ src/util/virxml.h | 4 ++++ 3 files changed, 34 insertions(+) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index f1bed27ba7..951b3691cf 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -3691,6 +3691,7 @@ virXMLFormatMetadata; virXMLNewNode; virXMLNodeContentString; virXMLNodeGetSubelement; +virXMLNodeGetSubelementList; virXMLNodeNameEqual; virXMLNodeSanitizeNamespaces; virXMLNodeToString; diff --git a/src/util/virxml.c b/src/util/virxml.c index 9b6ccfd6c9..7c853a591a 100644 --- a/src/util/virxml.c +++ b/src/util/virxml.c @@ -872,6 +872,35 @@ virXMLNodeGetSubelement(xmlNodePtr node, } +/** + * virXMLNodeGetSubelementList: + * @node: node to get subelement of + * @name: name of subelement to fetch (NULL to fetch all sub-elements) + * + * Find and return a sub-elements node of @node named @name in a GPtrArray + * populated with the xmlNodePtr objects. Caller is responsible for freeing the + * array but not the contained xmlNode objects. + */ +GPtrArray * +virXMLNodeGetSubelementList(xmlNodePtr node, + const char *name) +{ + GPtrArray *ret = g_ptr_array_new(); + xmlNodePtr n; + + for (n = node->children; n; n = n->next) { + if (n->type == XML_ELEMENT_NODE) { + if (name && !virXMLNodeNameEqual(n, name)) + continue; + + g_ptr_array_add(ret, n); + } + } + + return ret; +} + + /** * virXPathNode: * @xpath: the XPath string to evaluate diff --git a/src/util/virxml.h b/src/util/virxml.h index d5b998263c..46a4550788 100644 --- a/src/util/virxml.h +++ b/src/util/virxml.h @@ -77,6 +77,10 @@ xmlNodePtr virXMLNodeGetSubelement(xmlNodePtr node, const char *name); +GPtrArray * +virXMLNodeGetSubelementList(xmlNodePtr node, + const char *name); + xmlNodePtr virXPathNode(const char *xpath, xmlXPathContextPtr ctxt); -- 2.39.2

--- .../caps_8.0.0.x86_64.replies | 197 +++++++++--------- .../caps_8.0.0.x86_64.xml | 2 +- 2 files changed, 102 insertions(+), 97 deletions(-) diff --git a/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.replies index a41b3e1825..6be1823978 100644 --- a/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.replies +++ b/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.replies @@ -21,7 +21,7 @@ "minor": 2, "major": 7 }, - "package": "v7.2.0-1550-g79b677d658" + "package": "v7.2.0-1553-g70c4d6d3a2" }, "id": "libvirt-2" } @@ -25374,31 +25374,21 @@ "description": "on/off", "type": "bool" }, - { - "default-value": false, - "name": "share-rw", - "type": "bool" - }, { "default-value": 0, "name": "lcyls", "type": "uint32" }, + { + "default-value": false, + "name": "share-rw", + "type": "bool" + }, { "default-value": 256, "name": "queue-size", "type": "uint16" }, - { - "default-value": 0, - "name": "lsecs", - "type": "uint32" - }, - { - "default-value": 0, - "name": "heads", - "type": "uint32" - }, { "default-value": "auto", "name": "account-invalid", @@ -25406,12 +25396,18 @@ "type": "OnOffAuto" }, { - "name": "iothread", - "type": "link<iothread>" + "default-value": 0, + "name": "lsecs", + "type": "uint32" }, { "default-value": 0, - "name": "lheads", + "name": "min_io_size", + "type": "size" + }, + { + "default-value": 0, + "name": "secs", "type": "uint32" }, { @@ -25419,6 +25415,14 @@ "name": "num-queues", "type": "uint16" }, + { + "name": "iothread", + "type": "link<iothread>" + }, + { + "name": "serial", + "type": "str" + }, { "default-value": 0, "name": "cyls", @@ -25426,7 +25430,7 @@ }, { "default-value": 0, - "name": "secs", + "name": "lheads", "type": "uint32" }, { @@ -25435,8 +25439,8 @@ }, { "default-value": 0, - "name": "min_io_size", - "type": "size" + "name": "heads", + "type": "uint32" }, { "name": "bootindex", @@ -25464,6 +25468,11 @@ "description": "Error handling policy, report/ignore/enospc/stop/auto", "type": "BlockdevOnError" }, + { + "name": "iothread-vq-mapping", + "description": "IOThread virtqueue mapping list [{\"iothread\":\"<id>\", \"vqs\":[1,2,3,...]},...]", + "type": "IOThreadVirtQueueMappingList" + }, { "default-value": true, "name": "report-discard-granularity", @@ -25491,17 +25500,17 @@ "name": "x-disable-legacy-check", "type": "bool" }, - { - "default-value": true, - "name": "use-started", - "type": "bool" - }, { "default-value": false, "name": "iommu_platform", "description": "on/off", "type": "bool" }, + { + "default-value": true, + "name": "use-started", + "type": "bool" + }, { "default-value": 0, "name": "physical_block_size", @@ -25536,6 +25545,12 @@ "name": "max-discard-sectors", "type": "uint32" }, + { + "default-value": false, + "name": "packed", + "description": "on/off", + "type": "bool" + }, { "default-value": true, "name": "discard", @@ -25570,12 +25585,6 @@ "name": "max-write-zeroes-sectors", "type": "uint32" }, - { - "default-value": false, - "name": "packed", - "description": "on/off", - "type": "bool" - }, { "default-value": "auto", "name": "account-failed", @@ -25594,11 +25603,6 @@ "description": "on/off", "type": "bool" }, - { - "default-value": true, - "name": "x-enable-wce-if-config-wce", - "type": "bool" - }, { "default-value": "auto", "name": "backend_defaults", @@ -25606,8 +25610,9 @@ "type": "OnOffAuto" }, { - "name": "serial", - "type": "str" + "default-value": true, + "name": "x-enable-wce-if-config-wce", + "type": "bool" } ], "id": "libvirt-8" @@ -25902,17 +25907,17 @@ "description": "on/off", "type": "bool" }, - { - "default-value": true, - "name": "use-started", - "type": "bool" - }, { "default-value": false, "name": "iommu_platform", "description": "on/off", "type": "bool" }, + { + "default-value": true, + "name": "use-started", + "type": "bool" + }, { "default-value": true, "name": "host_ufo", @@ -26221,7 +26226,8 @@ }, { "default-value": true, - "name": "use-started", + "name": "queue_reset", + "description": "on/off", "type": "bool" }, { @@ -26245,17 +26251,17 @@ "name": "max_sectors", "type": "uint32" }, - { - "default-value": false, - "name": "x-disable-legacy-check", - "type": "bool" - }, { "default-value": true, "name": "any_layout", "description": "on/off", "type": "bool" }, + { + "default-value": false, + "name": "x-disable-legacy-check", + "type": "bool" + }, { "default-value": true, "name": "notify_on_empty", @@ -26280,8 +26286,7 @@ }, { "default-value": true, - "name": "queue_reset", - "description": "on/off", + "name": "use-started", "type": "bool" }, { @@ -27724,12 +27729,6 @@ "name": "yres", "type": "uint32" }, - { - "default-value": false, - "name": "iommu_platform", - "description": "on/off", - "type": "bool" - }, { "default-value": true, "name": "event_idx", @@ -27743,8 +27742,8 @@ "type": "bool" }, { - "default-value": false, - "name": "x-disable-legacy-check", + "default-value": true, + "name": "use-disabled-flag", "type": "bool" }, { @@ -27753,6 +27752,11 @@ "description": "on/off", "type": "bool" }, + { + "default-value": false, + "name": "x-disable-legacy-check", + "type": "bool" + }, { "default-value": 268435456, "name": "max_hostmem", @@ -27781,11 +27785,6 @@ "name": "use-started", "type": "bool" }, - { - "default-value": true, - "name": "use-disabled-flag", - "type": "bool" - }, { "default-value": false, "name": "blob", @@ -27802,6 +27801,12 @@ "name": "xres", "type": "uint32" }, + { + "default-value": false, + "name": "iommu_platform", + "description": "on/off", + "type": "bool" + }, { "name": "virtio-backend", "type": "child<virtio-gpu-device>" @@ -28219,6 +28224,10 @@ "description": "on/off", "type": "bool" }, + { + "name": "guest-stats-polling-interval", + "type": "int" + }, { "default-value": false, "name": "iommu_platform", @@ -28249,18 +28258,15 @@ "type": "bool" }, { - "name": "guest-stats-polling-interval", - "type": "int" + "default-value": true, + "name": "queue_reset", + "description": "on/off", + "type": "bool" }, { "name": "guest-stats", "type": "guest statistics" }, - { - "default-value": false, - "name": "x-disable-legacy-check", - "type": "bool" - }, { "default-value": true, "name": "any_layout", @@ -28268,8 +28274,9 @@ "type": "bool" }, { - "name": "iothread", - "type": "link<iothread>" + "default-value": false, + "name": "x-disable-legacy-check", + "type": "bool" }, { "default-value": true, @@ -28278,20 +28285,18 @@ "type": "bool" }, { - "default-value": true, - "name": "queue_reset", - "description": "on/off", - "type": "bool" + "name": "iothread", + "type": "link<iothread>" }, { "default-value": false, - "name": "qemu-4-0-config-size", + "name": "packed", + "description": "on/off", "type": "bool" }, { "default-value": false, - "name": "packed", - "description": "on/off", + "name": "qemu-4-0-config-size", "type": "bool" }, { @@ -29183,8 +29188,8 @@ "type": "bool" }, { - "default-value": false, - "name": "packed", + "default-value": true, + "name": "queue_reset", "description": "on/off", "type": "bool" }, @@ -29195,8 +29200,9 @@ "type": "bool" }, { - "default-value": true, - "name": "use-started", + "default-value": false, + "name": "packed", + "description": "on/off", "type": "bool" }, { @@ -29210,8 +29216,7 @@ }, { "default-value": true, - "name": "queue_reset", - "description": "on/off", + "name": "use-started", "type": "bool" }, { @@ -29403,10 +29408,6 @@ "description": "on/off", "type": "bool" }, - { - "name": "virtio-backend", - "type": "child<virtio-iommu-device>" - }, { "default-value": false, "name": "packed", @@ -29414,17 +29415,21 @@ "type": "bool" }, { - "default-value": false, - "name": "iommu_platform", + "default-value": true, + "name": "event_idx", "description": "on/off", "type": "bool" }, { - "default-value": true, - "name": "event_idx", + "default-value": false, + "name": "iommu_platform", "description": "on/off", "type": "bool" }, + { + "name": "virtio-backend", + "type": "child<virtio-iommu-device>" + }, { "default-value": true, "name": "boot-bypass", diff --git a/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml index c464071003..8ebaf9da7e 100644 --- a/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml @@ -207,7 +207,7 @@ <version>7002050</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100244</microcodeVersion> - <package>v7.2.0-1550-g79b677d658</package> + <package>v7.2.0-1553-g70c4d6d3a2</package> <arch>x86_64</arch> <hostCPU type='kvm' model='base' migratability='yes'> <property name='vmx-entry-load-rtit-ctl' type='boolean' value='false'/> -- 2.39.2

The capability represents the support for mapping virtqueues to iothreads for the 'virtio-blk' device. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml | 1 + 3 files changed, 4 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 39d3ea3e97..d7a8bb124f 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -690,6 +690,7 @@ VIR_ENUM_IMPL(virQEMUCaps, /* 445 */ "netdev.stream.reconnect", /* QEMU_CAPS_NETDEV_STREAM_RECONNECT */ + "virtio-blk.iothread-mapping", /* QEMU_CAPS_VIRTIO_BLK_IOTHREAD_MAPPING */ ); @@ -1439,6 +1440,7 @@ static struct virQEMUCapsDevicePropsFlags virQEMUCapsDevicePropsVirtioBlk[] = { { "scsi", QEMU_CAPS_VIRTIO_BLK_SCSI, virQEMUCapsDevicePropsVirtioBlkSCSIDefault }, { "queue-size", QEMU_CAPS_VIRTIO_BLK_QUEUE_SIZE, NULL }, { "acpi-index", QEMU_CAPS_ACPI_INDEX, NULL }, + { "iothread-vq-mapping", QEMU_CAPS_VIRTIO_BLK_IOTHREAD_MAPPING, NULL }, }; static struct virQEMUCapsDevicePropsFlags virQEMUCapsDevicePropsVirtioNet[] = { diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index fd2f237aaf..7721c4a2f9 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -669,6 +669,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ /* 445 */ QEMU_CAPS_NETDEV_STREAM_RECONNECT, /* -netdev stream supports reconnect */ + QEMU_CAPS_VIRTIO_BLK_IOTHREAD_MAPPING, /* virtio-blk supports per-virtqueue iothread mapping */ QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml index 8ebaf9da7e..c55bbe07b8 100644 --- a/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml @@ -204,6 +204,7 @@ <flag name='cryptodev-backend-lkcf'/> <flag name='pvpanic-pci'/> <flag name='netdev.stream.reconnect'/> + <flag name='virtio-blk.iothread-mapping'/> <version>7002050</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100244</microcodeVersion> -- 2.39.2

Introduce a new <iothreads> sub-element of disk's <driver> which will allow configuring multiple iothreads and also map them to specific virt-queues of virtio devices. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- docs/formatdomain.rst | 23 +++++- src/conf/domain_conf.c | 76 +++++++++++++++++++ src/conf/domain_conf.h | 14 ++++ src/conf/domain_validate.c | 8 ++ src/conf/schemas/domaincommon.rng | 47 +++++++++--- .../iothreads-disk.x86_64-latest.args | 13 +++- tests/qemuxml2argvdata/iothreads-disk.xml | 25 +++++- .../iothreads-disk.x86_64-latest.xml | 26 ++++++- 8 files changed, 211 insertions(+), 21 deletions(-) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index d831c1e527..4940f3d857 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -3233,7 +3233,28 @@ paravirtualized driver is specified via the ``disk`` element. assigned to the same IOThread and are numbered from 1 to the domain iothreads value. Available for a disk device ``target`` configured to use "virtio" ``bus`` and "pci" or "ccw" ``address`` types. :since:`Since 1.2.8 - (QEMU 2.1)` + (QEMU 2.1)` *Note:* ``iothread`` is mutually exclusive with ``iothreads``. + - The optional ``iothreads`` sub-element allows specifying multiple IOThreads + via the ``iothread`` sub-element with attribute ``id`` the disk will use + for I/O operations. Optionally the ``iothread`` element can have multiple + ``queue`` subelements specifying that given iothread should be used to + handle given queues. :since:`Since XXXXXX`. + Example:: + + <driver name='qemu' queues='2'> + <iothreads> + <iothread id='1'> + <queue id='1'/> + </iothread> + <iothread id='2'> + <queue id='1'/> + </iothread> + <iothread id='3'> + <queue id='2'/> + </iothread> + </iothreads> + </driver> + - The optional ``queues`` attribute specifies the number of virt queues for virtio-blk. ( :since:`Since 3.9.0` ) - The optional ``queue_size`` attribute specifies the size of each virt diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 9426d55f8d..6904a71c80 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2333,6 +2333,17 @@ virDomainDefGetVcpusTopology(const virDomainDef *def, } +void +virDomainDiskIothreadDefFree(virDomainDiskIothreadDef *def) +{ + if (!def) + return; + + g_free(def->queues); + g_free(def); +} + + static virDomainDiskDef * virDomainDiskDefNewSource(virDomainXMLOption *xmlopt, virStorageSource **src) @@ -2381,6 +2392,7 @@ virDomainDiskDefFree(virDomainDiskDef *def) g_free(def->virtio); virDomainDeviceInfoClear(&def->info); virObjectUnref(def->privateData); + g_slist_free_full(def->iothreads, (GDestroyNotify) virDomainDiskIothreadDefFree); g_free(def); } @@ -7745,6 +7757,8 @@ static int virDomainDiskDefDriverParseXML(virDomainDiskDef *def, xmlNodePtr cur) { + xmlNodePtr iothreadsNode; + def->driverName = virXMLPropString(cur, "name"); if (virXMLPropEnum(cur, "cache", virDomainDiskCacheTypeFromString, @@ -7791,6 +7805,44 @@ virDomainDiskDefDriverParseXML(virDomainDiskDef *def, if (virXMLPropUInt(cur, "iothread", 10, VIR_XML_PROP_NONZERO, &def->iothread) < 0) return -1; + if ((iothreadsNode = virXMLNodeGetSubelement(cur, "iothreads"))) { + g_autoslist(virDomainDiskIothreadDef) ioth = NULL; + g_autoptr(GPtrArray) iothreadNodes = NULL; + + if ((iothreadNodes = virXMLNodeGetSubelementList(iothreadsNode, "iothread"))) { + size_t i; + + for (i = 0; i < iothreadNodes->len; i++) { + xmlNodePtr iothNode = g_ptr_array_index(iothreadNodes, i); + g_autoptr(virDomainDiskIothreadDef) iothdef = g_new0(virDomainDiskIothreadDef, 1); + g_autoptr(GPtrArray) queueNodes = NULL; + + if (virXMLPropUInt(iothNode, "id", 10, VIR_XML_PROP_REQUIRED, + &iothdef->id) < 0) + return -1; + + if ((queueNodes = virXMLNodeGetSubelementList(iothNode, "queue"))) { + size_t q; + + iothdef->queues = g_new0(unsigned int, queueNodes->len); + iothdef->nqueues = queueNodes->len; + + for (q = 0; q < queueNodes->len; q++) { + xmlNodePtr queueNode = g_ptr_array_index(queueNodes, q); + + if (virXMLPropUInt(queueNode, "id", 10, VIR_XML_PROP_REQUIRED, + &(iothdef->queues[q])) < 0) + return -1; + } + } + + ioth = g_slist_prepend(ioth, g_steal_pointer(&iothdef)); + } + + def->iothreads = g_slist_reverse(g_steal_pointer(&ioth)); + } + } + if (virXMLPropEnum(cur, "detect_zeroes", virDomainDiskDetectZeroesTypeFromString, VIR_XML_PROP_NONZERO, &def->detect_zeroes) < 0) @@ -22513,6 +22565,30 @@ virDomainDiskDefFormatDriver(virBuffer *buf, virXMLFormatElement(&childBuf, "metadata_cache", NULL, &metadataCacheChildBuf); } + if (disk->iothreads) { + g_auto(virBuffer) iothreadsChildBuf = VIR_BUFFER_INIT_CHILD(&childBuf); + GSList *n; + + for (n = disk->iothreads; n; n = n->next) { + virDomainDiskIothreadDef *iothDef = n->data; + g_auto(virBuffer) iothreadAttrBuf = VIR_BUFFER_INITIALIZER; + g_auto(virBuffer) iothreadChildBuf = VIR_BUFFER_INIT_CHILD(&iothreadsChildBuf); + + virBufferAsprintf(&iothreadAttrBuf, " id='%u'", iothDef->id); + + if (iothDef->queues) { + size_t q; + + for (q = 0; q < iothDef->nqueues; q++) + virBufferAsprintf(&iothreadChildBuf, "<queue id='%u'/>\n", iothDef->queues[q]); + } + + virXMLFormatElement(&iothreadsChildBuf, "iothread", &iothreadAttrBuf, &iothreadChildBuf); + } + + virXMLFormatElement(&childBuf, "iothreads", NULL, &iothreadsChildBuf); + } + virXMLFormatElement(buf, "driver", &attrBuf, &childBuf); } diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index f6dade62fc..708993174a 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -552,6 +552,19 @@ typedef enum { VIR_ENUM_DECL(virDomainSnapshotLocation); +struct _virDomainDiskIothreadDef { + unsigned int id; + + /* optional list of virtqueues the iothread should handle */ + unsigned int *queues; + size_t nqueues; +}; + +typedef struct _virDomainDiskIothreadDef virDomainDiskIothreadDef; +void virDomainDiskIothreadDefFree(virDomainDiskIothreadDef *def); +G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainDiskIothreadDef, virDomainDiskIothreadDefFree); + + /* Stores the virtual disk configuration */ struct _virDomainDiskDef { virStorageSource *src; /* non-NULL. XXX Allow NULL for empty cdrom? */ @@ -605,6 +618,7 @@ struct _virDomainDiskDef { virDomainDeviceSGIO sgio; virDomainDiskDiscard discard; unsigned int iothread; /* unused = 0, > 0 specific thread # */ + GSList *iothreads; /* List of virDomainDiskIothreadsDef */ virDomainDiskDetectZeroes detect_zeroes; char *domain_name; /* backend domain name */ unsigned int queues; diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c index 5559a71e14..2aba645279 100644 --- a/src/conf/domain_validate.c +++ b/src/conf/domain_validate.c @@ -914,6 +914,14 @@ virDomainDiskDefValidate(const virDomainDef *def, return -1; } + /* configuring both <driver iothread='n'> and it's <iothreads> sub-element + * isn't supported */ + if (disk->iothread && disk->iothreads) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("disk driver 'iothread' attribute can't be used together with 'iothreads' subelement")); + return -1; + } + return 0; } diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng index 5a1d79672f..3e54091da2 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -2467,9 +2467,26 @@ </optional> </element> </define> - <!-- - Disk may use a special driver for access. - --> + + <define name="diskDriverIothreads"> + <element name="iothreads"> + <oneOrMore> + <element name="iothread"> + <attribute name="id"> + <ref name="unsignedInt"/> + </attribute> + <zeroOrMore> + <element name="queue"> + <attribute name="id"> + <ref name="unsignedInt"/> + </attribute> + </element> + </zeroOrMore> + </element> + </oneOrMore> + </element> + </define> + <define name="diskDriver"> <element name="driver"> <optional> @@ -2516,17 +2533,23 @@ </attribute> </optional> <ref name="virtioOptions"/> - <optional> - <element name="metadata_cache"> - <optional> - <element name="max_size"> - <ref name="scaledInteger"/> - </element> - </optional> - </element> - </optional> + <interleave> + <optional> + <element name="metadata_cache"> + <optional> + <element name="max_size"> + <ref name="scaledInteger"/> + </element> + </optional> + </element> + </optional> + <optional> + <ref name="diskDriverIothreads"/> + </optional> + </interleave> </element> </define> + <define name="driverFormat"> <optional> <attribute name="name"> diff --git a/tests/qemuxml2argvdata/iothreads-disk.x86_64-latest.args b/tests/qemuxml2argvdata/iothreads-disk.x86_64-latest.args index 02fb74d945..d1953327a7 100644 --- a/tests/qemuxml2argvdata/iothreads-disk.x86_64-latest.args +++ b/tests/qemuxml2argvdata/iothreads-disk.x86_64-latest.args @@ -19,6 +19,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -smp 2,sockets=2,cores=1,threads=1 \ -object '{"qom-type":"iothread","id":"iothread1"}' \ -object '{"qom-type":"iothread","id":"iothread2"}' \ +-object '{"qom-type":"iothread","id":"iothread3"}' \ +-object '{"qom-type":"iothread","id":"iothread4"}' \ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ -display none \ -no-user-config \ @@ -30,12 +32,15 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -no-acpi \ -boot strict=on \ -device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \ --blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/iothrtest1.img","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/iothrtest1.img","node-name":"libvirt-3-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-3-format","read-only":false,"driver":"raw","file":"libvirt-3-storage"}' \ +-device '{"driver":"virtio-blk-pci","iothread":"iothread1","bus":"pci.0","addr":"0x4","drive":"libvirt-3-format","id":"virtio-disk1","bootindex":1}' \ +-blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/iothrtest2.img","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-2-format","read-only":false,"driver":"raw","file":"libvirt-2-storage"}' \ --device '{"driver":"virtio-blk-pci","iothread":"iothread1","bus":"pci.0","addr":"0x4","drive":"libvirt-2-format","id":"virtio-disk1","bootindex":1}' \ --blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/iothrtest2.img","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ +-device '{"driver":"virtio-blk-pci","num-queues":4,"bus":"pci.0","addr":"0x2","drive":"libvirt-2-format","id":"virtio-disk2"}' \ +-blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/iothrtest3.img","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ --device '{"driver":"virtio-blk-pci","iothread":"iothread2","bus":"pci.0","addr":"0x2","drive":"libvirt-1-format","id":"virtio-disk2"}' \ +-device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x3","drive":"libvirt-1-format","id":"virtio-disk3"}' \ -audiodev '{"id":"audio1","driver":"none"}' \ -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on diff --git a/tests/qemuxml2argvdata/iothreads-disk.xml b/tests/qemuxml2argvdata/iothreads-disk.xml index ad0731c79c..7ce25f559e 100644 --- a/tests/qemuxml2argvdata/iothreads-disk.xml +++ b/tests/qemuxml2argvdata/iothreads-disk.xml @@ -4,7 +4,7 @@ <memory unit='KiB'>219136</memory> <currentMemory unit='KiB'>219136</currentMemory> <vcpu placement='static'>2</vcpu> - <iothreads>2</iothreads> + <iothreads>4</iothreads> <os> <type arch='x86_64' machine='pc'>hvm</type> <boot dev='hd'/> @@ -22,10 +22,31 @@ <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </disk> <disk type='file' device='disk'> - <driver name='qemu' type='raw' iothread='2'/> + <driver name='qemu' type='raw' queues='4'> + <iothreads> + <iothread id='2'> + <queue id='1'/> + <queue id='3'/> + </iothread> + <iothread id='3'> + <queue id='0'/> + <queue id='2'/> + </iothread> + </iothreads> + </driver> <source file='/var/lib/libvirt/images/iothrtest2.img'/> <target dev='vdc' bus='virtio'/> </disk> + <disk type='file' device='disk'> + <driver name='qemu' type='raw'> + <iothreads> + <iothread id='4'/> + <iothread id='1'/> + </iothreads> + </driver> + <source file='/var/lib/libvirt/images/iothrtest3.img'/> + <target dev='vdd' bus='virtio'/> + </disk> <controller type='usb' index='0'/> <controller type='ide' index='0'/> <controller type='pci' index='0' model='pci-root'/> diff --git a/tests/qemuxml2xmloutdata/iothreads-disk.x86_64-latest.xml b/tests/qemuxml2xmloutdata/iothreads-disk.x86_64-latest.xml index ae1da9ec2a..94864feb85 100644 --- a/tests/qemuxml2xmloutdata/iothreads-disk.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/iothreads-disk.x86_64-latest.xml @@ -4,7 +4,7 @@ <memory unit='KiB'>219136</memory> <currentMemory unit='KiB'>219136</currentMemory> <vcpu placement='static'>2</vcpu> - <iothreads>2</iothreads> + <iothreads>4</iothreads> <os> <type arch='x86_64' machine='pc'>hvm</type> <boot dev='hd'/> @@ -25,11 +25,33 @@ <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </disk> <disk type='file' device='disk'> - <driver name='qemu' type='raw' iothread='2'/> + <driver name='qemu' type='raw' queues='4'> + <iothreads> + <iothread id='2'> + <queue id='1'/> + <queue id='3'/> + </iothread> + <iothread id='3'> + <queue id='0'/> + <queue id='2'/> + </iothread> + </iothreads> + </driver> <source file='/var/lib/libvirt/images/iothrtest2.img'/> <target dev='vdc' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </disk> + <disk type='file' device='disk'> + <driver name='qemu' type='raw'> + <iothreads> + <iothread id='4'/> + <iothread id='1'/> + </iothreads> + </driver> + <source file='/var/lib/libvirt/images/iothrtest3.img'/> + <target dev='vdd' bus='virtio'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> + </disk> <controller type='usb' index='0' model='piix3-uhci'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> -- 2.39.2

Add validation and formatting of the commandline. Note that this is based on Stefan's RFC series which only adds the qemu interface: https://lists.gnu.org/archive/html/qemu-devel/2023-01/msg04090.html --- src/qemu/qemu_command.c | 45 +++++++ src/qemu/qemu_validate.c | 117 ++++++++++++++++-- .../iothreads-disk.x86_64-latest.args | 4 +- 3 files changed, 153 insertions(+), 13 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index cc476addce..d9bb984101 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1746,6 +1746,45 @@ qemuBuildDriveStr(virDomainDiskDef *disk) } +static virJSONValue * +qemuBuildDiskDeviceIothreadMappingProps(GSList *iothreads) +{ + g_autoptr(virJSONValue) ret = virJSONValueNewArray(); + GSList *n; + + for (n = iothreads; n; n = n->next) { + virDomainDiskIothreadDef *ioth = n->data; + g_autoptr(virJSONValue) props = NULL; + g_autoptr(virJSONValue) queues = NULL; + g_autofree char *alias = g_strdup_printf("iothread%u", ioth->id); + size_t i; + + if (ioth->nqueues > 0) { + queues = virJSONValueNewArray(); + + for (i = 0; i < ioth->nqueues; i++) { + g_autoptr(virJSONValue) vq = virJSONValueNewNumberUint(ioth->queues[i]); + + if (virJSONValueArrayAppend(queues, &vq)) + return NULL; + } + } + + if (virJSONValueObjectAdd(&props, + "s:iothread", alias, + "A:vqs", &queues, + NULL) < 0) + return NULL; + + + if (virJSONValueArrayAppend(ret, &props)) + return NULL; + } + + return g_steal_pointer(&ret); +} + + virJSONValue * qemuBuildDiskDeviceProps(const virDomainDef *def, virDomainDiskDef *disk, @@ -1804,11 +1843,16 @@ qemuBuildDiskDeviceProps(const virDomainDef *def, case VIR_DOMAIN_DISK_BUS_VIRTIO: { virTristateSwitch scsi = VIR_TRISTATE_SWITCH_ABSENT; + g_autoptr(virJSONValue) iothreadMapping = NULL; g_autofree char *iothread = NULL; if (disk->iothread > 0) iothread = g_strdup_printf("iothread%u", disk->iothread); + if (disk->iothreads && + !(iothreadMapping = qemuBuildDiskDeviceIothreadMappingProps(disk->iothreads))) + return NULL; + if (virStorageSourceGetActualType(disk->src) != VIR_STORAGE_TYPE_VHOST_USER && virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_BLK_SCSI)) { /* if sg_io is true but the scsi option isn't supported, @@ -1832,6 +1876,7 @@ qemuBuildDiskDeviceProps(const virDomainDef *def, "T:scsi", scsi, "p:num-queues", disk->queues, "p:queue-size", disk->queue_size, + "A:iothread-vq-mapping", &iothreadMapping, NULL) < 0) return NULL; } diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index c877aa73d4..79096a2fcf 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -2822,12 +2822,24 @@ qemuValidateDomainDeviceDefDiskSerial(const char *value) } -static bool +static int qemuValidateDomainDeviceDefDiskIOThreads(const virDomainDef *def, - const virDomainDiskDef *disk) + const virDomainDiskDef *disk, + virQEMUCaps *qemuCaps) { + if (disk->iothread == 0 && !disk->iothreads) + return 0; + switch ((virDomainDiskBus)disk->bus) { case VIR_DOMAIN_DISK_BUS_VIRTIO: + if (disk->iothreads) { + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_BLK_IOTHREAD_MAPPING)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("IOThread mapping for disk '%s' is not available with this QEMU binary"), + disk->dst); + return -1; + } + } break; case VIR_DOMAIN_DISK_BUS_IDE: @@ -2843,18 +2855,101 @@ qemuValidateDomainDeviceDefDiskIOThreads(const virDomainDef *def, virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("IOThreads not available for bus %s target %s"), virDomainDiskBusTypeToString(disk->bus), disk->dst); - return false; + return -1; } - /* Can we find the disk iothread in the iothreadid list? */ - if (!virDomainIOThreadIDFind(def, disk->iothread)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("Disk iothread '%u' not defined in iothreadid"), - disk->iothread); - return false; + if (disk->iothreads) { + virDomainDiskIothreadDef *first_ioth = disk->iothreads->data; + g_autoptr(virBitmap) queueMap = NULL; + g_autoptr(GHashTable) iothreads = virHashNew(NULL); + ssize_t unused; + GSList *n; + + if (first_ioth->queues) { + if (disk->queues == 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("disk 'queue' count must be configured for explicit iothread to queue mapping")); + return -1; + } + + queueMap = virBitmapNew(disk->queues); + } + + /* we are validating that: + * - there are no duplicate iothreads + * - there are only valid iothreads + * - if queue mapping is provided + * - queue is in range + * - it must be provided for all assigned iothreads + * - it must be provided for all queues + * - queue must be assigned only once + */ + for (n = disk->iothreads; n; n = n->next) { + virDomainDiskIothreadDef *ioth = n->data; + g_autofree char *alias = g_strdup_printf("iothread%u", ioth->id); + size_t i; + + if (g_hash_table_contains(iothreads, alias)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Duplicate mapping for iothread '%u'"), ioth->id); + return -1; + } + + g_hash_table_insert(iothreads, g_steal_pointer(&alias), NULL); + + if (!virDomainIOThreadIDFind(def, ioth->id)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Disk iothread '%u' not defined in iothreadid"), + ioth->id); + return -1; + } + + if (!!queueMap != !!ioth->queues) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("iothread to queue mapping must be provided for all iothreads or for none")); + return -1; + } + + for (i = 0; i < ioth->nqueues; i++) { + bool hasMapping; + + if (virBitmapGetBit(queueMap, ioth->queues[i], &hasMapping) < 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("disk iothread queue '%u' mapping out of range"), + ioth->queues[i]); + return -1; + } + + if (hasMapping) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("disk iothread queue '%u' is already assigned"), + ioth->queues[i]); + return -1; + } + + ignore_value(virBitmapSetBit(queueMap, ioth->queues[i])); + + } + } + + if (queueMap) { + if ((unused = virBitmapNextClearBit(queueMap, -1)) >= 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("missing iothread mapping for queue '%zd'"), + unused); + return -1; + } + } + } else { + if (!virDomainIOThreadIDFind(def, disk->iothread)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Disk iothread '%u' not defined in iothreadid"), + disk->iothread); + return -1; + } } - return true; + return 0; } @@ -3147,7 +3242,7 @@ qemuValidateDomainDeviceDefDiskFrontend(const virDomainDiskDef *disk, qemuValidateDomainDeviceDefDiskSerial(disk->serial) < 0) return -1; - if (disk->iothread && !qemuValidateDomainDeviceDefDiskIOThreads(def, disk)) + if (qemuValidateDomainDeviceDefDiskIOThreads(def, disk, qemuCaps)) return -1; return 0; diff --git a/tests/qemuxml2argvdata/iothreads-disk.x86_64-latest.args b/tests/qemuxml2argvdata/iothreads-disk.x86_64-latest.args index d1953327a7..05729acde5 100644 --- a/tests/qemuxml2argvdata/iothreads-disk.x86_64-latest.args +++ b/tests/qemuxml2argvdata/iothreads-disk.x86_64-latest.args @@ -37,10 +37,10 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -device '{"driver":"virtio-blk-pci","iothread":"iothread1","bus":"pci.0","addr":"0x4","drive":"libvirt-3-format","id":"virtio-disk1","bootindex":1}' \ -blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/iothrtest2.img","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-2-format","read-only":false,"driver":"raw","file":"libvirt-2-storage"}' \ --device '{"driver":"virtio-blk-pci","num-queues":4,"bus":"pci.0","addr":"0x2","drive":"libvirt-2-format","id":"virtio-disk2"}' \ +-device '{"driver":"virtio-blk-pci","num-queues":4,"iothread-vq-mapping":[{"iothread":"iothread2","vqs":[1,3]},{"iothread":"iothread3","vqs":[0,2]}],"bus":"pci.0","addr":"0x2","drive":"libvirt-2-format","id":"virtio-disk2"}' \ -blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/iothrtest3.img","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ --device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x3","drive":"libvirt-1-format","id":"virtio-disk3"}' \ +-device '{"driver":"virtio-blk-pci","iothread-vq-mapping":[{"iothread":"iothread4"},{"iothread":"iothread1"}],"bus":"pci.0","addr":"0x3","drive":"libvirt-1-format","id":"virtio-disk3"}' \ -audiodev '{"id":"audio1","driver":"none"}' \ -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on -- 2.39.2
participants (2)
-
Ján Tomko
-
Peter Krempa