[PATCH 00/15] qemu: Fix HPET timer validation and remove always-present architecture dependent capabilities

Remove everything out of virQEMUCapsInitQMPBasicArch and in the process fix a bug. Peter Krempa (15): qemu: validate: Fix logic for validating precence of the HPET timer NEWS: Mention bug in validation of HPET timer qemu: command: Replace check using QEMU_CAPS_NO_ACPI with architecture check qemu: capabilities: Retire QEMU_CAPS_NO_ACPI qemu: command: Format '-no-hpet' based on architecture check qemu: capabilities: Retire QEMU_CAPS_NO_HPET qemuxml2argvtest: Don't set QEMU_CAPS_MACH_VIRT_GIC_VERSION qemu: command: Replace caps check for QEMU_CAPS_MACH_VIRT_GIC_VERSION by arch check qemu: capabilities: Retire QEMU_CAPS_MACH_VIRT_GIC_VERSION qemuxml2argvtest: Remove always asserted s390 capabilities qemuAppendKeyWrapMachineParms: Format "keywrap" arguments based on architecture qemu: capabilities: Retire QEMU_CAPS_AES_KEY_WRAP and QEMU_CAPS_DEA_KEY_WRAP qemuAppendLoadparmMachineParm: Format 'loadparm' based on architecture qemu: capabilities: Retire QEMU_CAPS_LOADPARM qemu: capabilities: Remove unused virQEMUCapsInitQMPBasicArch NEWS.rst | 6 ++ src/qemu/qemu_capabilities.c | 93 ++--------------- src/qemu/qemu_capabilities.h | 12 +-- src/qemu/qemu_capspriv.h | 3 - src/qemu/qemu_command.c | 72 +++++++------- src/qemu/qemu_validate.c | 14 +-- .../caps_4.2.0.aarch64.xml | 2 - .../qemucapabilitiesdata/caps_4.2.0.s390x.xml | 3 - .../caps_4.2.0.x86_64.xml | 2 - .../caps_5.0.0.aarch64.xml | 2 - .../caps_5.0.0.x86_64.xml | 2 - .../caps_5.1.0.x86_64.xml | 2 - .../caps_5.2.0.aarch64.xml | 2 - .../qemucapabilitiesdata/caps_5.2.0.s390x.xml | 3 - .../caps_5.2.0.x86_64.xml | 2 - .../caps_6.0.0.aarch64.xml | 2 - .../qemucapabilitiesdata/caps_6.0.0.s390x.xml | 3 - .../caps_6.0.0.x86_64.xml | 2 - .../caps_6.1.0.x86_64.xml | 2 - .../caps_6.2.0.aarch64.xml | 2 - .../caps_6.2.0.x86_64.xml | 2 - .../caps_7.0.0.aarch64.xml | 2 - .../caps_7.0.0.x86_64.xml | 2 - .../caps_7.1.0.x86_64.xml | 2 - .../caps_7.2.0.x86_64.xml | 2 - .../caps_8.0.0.x86_64.xml | 1 - tests/qemuhotplugtest.c | 2 - .../q35-virt-manager-basic.x86_64-4.2.0.args | 1 - .../q35-virt-manager-basic.x86_64-latest.args | 2 +- .../q35-virt-manager-basic.xml | 2 +- tests/qemuxml2argvtest.c | 99 ++++++------------- .../q35-virt-manager-basic.x86_64-latest.xml | 2 +- tests/qemuxml2xmltest.c | 3 - 33 files changed, 93 insertions(+), 260 deletions(-) -- 2.39.2

Commit 24cc9cda826 switched over to use -machine hpet, but one of the steps it did was to clear the QEMU_CAPS_NO_HPET capability. The validation check still uses the old capability though which means that for configs which would explicitly enable HPET we'd report an error. Since HPET is an x86(_64) platform specific device, convert the validation check to an architecture check as all supported qemu versions actually support it. Modify a test case to request HPET to catch posible future problems. Fixes: 24cc9cda826 Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_validate.c | 14 +++++++------- .../q35-virt-manager-basic.x86_64-4.2.0.args | 1 - .../q35-virt-manager-basic.x86_64-latest.args | 2 +- tests/qemuxml2argvdata/q35-virt-manager-basic.xml | 2 +- .../q35-virt-manager-basic.x86_64-latest.xml | 2 +- 5 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 30c11a567a..93077aadfc 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -599,13 +599,13 @@ qemuValidateDomainDefClockTimers(const virDomainDef *def, break; case VIR_DOMAIN_TIMER_NAME_HPET: - /* no hpet timer available. The only possible action - is to raise an error if present="yes" */ - if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_NO_HPET) && - timer->present == VIR_TRISTATE_BOOL_YES) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - "%s", _("hpet timer is not supported")); - return -1; + if (timer->present == VIR_TRISTATE_BOOL_YES) { + if (def->os.arch != VIR_ARCH_I686 && + def->os.arch != VIR_ARCH_X86_64) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("hpet timer is not supported by this architecture")); + return -1; + } } break; diff --git a/tests/qemuxml2argvdata/q35-virt-manager-basic.x86_64-4.2.0.args b/tests/qemuxml2argvdata/q35-virt-manager-basic.x86_64-4.2.0.args index d8b840f171..b59f713101 100644 --- a/tests/qemuxml2argvdata/q35-virt-manager-basic.x86_64-4.2.0.args +++ b/tests/qemuxml2argvdata/q35-virt-manager-basic.x86_64-4.2.0.args @@ -23,7 +23,6 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-virt-manager-basic/.config \ -mon chardev=charmonitor,id=monitor,mode=control \ -rtc base=utc,driftfix=slew \ -global kvm-pit.lost_tick_policy=delay \ --no-hpet \ -no-shutdown \ -global ICH9-LPC.disable_s3=1 \ -global ICH9-LPC.disable_s4=1 \ diff --git a/tests/qemuxml2argvdata/q35-virt-manager-basic.x86_64-latest.args b/tests/qemuxml2argvdata/q35-virt-manager-basic.x86_64-latest.args index 4d029fd55f..5a7b5d7629 100644 --- a/tests/qemuxml2argvdata/q35-virt-manager-basic.x86_64-latest.args +++ b/tests/qemuxml2argvdata/q35-virt-manager-basic.x86_64-latest.args @@ -10,7 +10,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-virt-manager-basic/.config \ -name guest=virt-manager-basic,debug-threads=on \ -S \ -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-virt-manager-basic/master-key.aes"}' \ --machine q35,usb=off,vmport=off,dump-guest-core=off,memory-backend=pc.ram,hpet=off,acpi=on \ +-machine q35,usb=off,vmport=off,dump-guest-core=off,memory-backend=pc.ram,hpet=on,acpi=on \ -accel kvm \ -cpu qemu64 \ -m 4096 \ diff --git a/tests/qemuxml2argvdata/q35-virt-manager-basic.xml b/tests/qemuxml2argvdata/q35-virt-manager-basic.xml index c2d82c2c47..75075d0ab4 100644 --- a/tests/qemuxml2argvdata/q35-virt-manager-basic.xml +++ b/tests/qemuxml2argvdata/q35-virt-manager-basic.xml @@ -16,7 +16,7 @@ <clock offset='utc'> <timer name='rtc' tickpolicy='catchup'/> <timer name='pit' tickpolicy='delay'/> - <timer name='hpet' present='no'/> + <timer name='hpet' present='yes'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> diff --git a/tests/qemuxml2xmloutdata/q35-virt-manager-basic.x86_64-latest.xml b/tests/qemuxml2xmloutdata/q35-virt-manager-basic.x86_64-latest.xml index 5bb00ceb38..08be45b5a5 100644 --- a/tests/qemuxml2xmloutdata/q35-virt-manager-basic.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/q35-virt-manager-basic.x86_64-latest.xml @@ -19,7 +19,7 @@ <clock offset='utc'> <timer name='rtc' tickpolicy='catchup'/> <timer name='pit' tickpolicy='delay'/> - <timer name='hpet' present='no'/> + <timer name='hpet' present='yes'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> -- 2.39.2

In the commit summary: s/precence/presence/ On a Monday in 2023, Peter Krempa wrote:
Commit 24cc9cda826 switched over to use -machine hpet, but one of the steps it did was to clear the QEMU_CAPS_NO_HPET capability.
The validation check still uses the old capability though which means that for configs which would explicitly enable HPET we'd report an error.
Since HPET is an x86(_64) platform specific device, convert the validation check to an architecture check as all supported qemu versions actually support it.
Modify a test case to request HPET to catch posible future problems.
Fixes: 24cc9cda826 Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_validate.c | 14 +++++++------- .../q35-virt-manager-basic.x86_64-4.2.0.args | 1 - .../q35-virt-manager-basic.x86_64-latest.args | 2 +- tests/qemuxml2argvdata/q35-virt-manager-basic.xml | 2 +- .../q35-virt-manager-basic.x86_64-latest.xml | 2 +- 5 files changed, 10 insertions(+), 11 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- NEWS.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/NEWS.rst b/NEWS.rst index 2ccbf0a62a..a5788417f3 100644 --- a/NEWS.rst +++ b/NEWS.rst @@ -37,6 +37,12 @@ v9.2.0 (unreleased) * **Bug fixes** + * qemu: Fix validation of the HPET timer + + Due to a logic bug when determining support for the HPET timer libvirt would + starting from version 9.0 we'd reject VM configurations explicitly enabling + the HPET timer. + v9.1.0 (2023-03-01) =================== -- 2.39.2

On a Monday in 2023, Peter Krempa wrote:
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- NEWS.rst | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/NEWS.rst b/NEWS.rst index 2ccbf0a62a..a5788417f3 100644 --- a/NEWS.rst +++ b/NEWS.rst @@ -37,6 +37,12 @@ v9.2.0 (unreleased)
* **Bug fixes**
+ * qemu: Fix validation of the HPET timer + + Due to a logic bug when determining support for the HPET timer libvirt would + starting from version 9.0 we'd reject VM configurations explicitly enabling + the HPET timer. +
-EPARSE How about: Due to a logic bug introduced in libvirt 9.0.0, VM configurations explicitly enabling the HPET timer were rejected. Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

QEMU_CAPS_NO_ACPI is asserted based on architecture, so it can be replaced by a non-capability check. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_command.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 7a1cff1fd0..189be55537 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5969,7 +5969,9 @@ qemuBuildPMCommandLine(virCommand *cmd, /* Use old syntax of -no-acpi only if qemu didn't report that it supports the * new syntax */ if (virQEMUCapsMachineSupportsACPI(qemuCaps, def->virtType, def->os.machine) == VIR_TRISTATE_BOOL_ABSENT && - virQEMUCapsGet(qemuCaps, QEMU_CAPS_NO_ACPI)) { + (def->os.arch == VIR_ARCH_I686 || + def->os.arch == VIR_ARCH_X86_64 || + def->os.arch == VIR_ARCH_AARCH64)) { if (def->features[VIR_DOMAIN_FEATURE_ACPI] != VIR_TRISTATE_SWITCH_ON) virCommandAddArg(cmd, "-no-acpi"); } -- 2.39.2

The capability is based on a platform check rather than what given qemu supports. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_capabilities.c | 8 +------- src/qemu/qemu_capabilities.h | 2 +- tests/qemucapabilitiesdata/caps_4.2.0.aarch64.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.x86_64.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.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_6.0.0.aarch64.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.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_7.0.0.x86_64.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.x86_64.xml | 1 - 19 files changed, 2 insertions(+), 25 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index c014c3d501..fe0f2f1c4d 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -172,7 +172,7 @@ VIR_ENUM_IMPL(virQEMUCaps, /* 75 */ "ich9-ahci", /* QEMU_CAPS_ICH9_AHCI */ - "no-acpi", /* QEMU_CAPS_NO_ACPI */ + "no-acpi", /* X_QEMU_CAPS_NO_ACPI */ "fsdev-readonly", /* X_QEMU_CAPS_FSDEV_READONLY */ "virtio-blk-pci.scsi", /* QEMU_CAPS_VIRTIO_BLK_SCSI */ "blk-sg-io", /* X_QEMU_CAPS_VIRTIO_BLK_SG_IO */ @@ -5475,17 +5475,11 @@ virQEMUCapsInitQMPBasicArch(virQEMUCaps *qemuCaps) switch (qemuCaps->arch) { case VIR_ARCH_I686: case VIR_ARCH_X86_64: - /* ACPI only works on x86 and aarch64 */ - virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_ACPI); - /* HPET is x86 specific */ virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_HPET); break; case VIR_ARCH_AARCH64: - /* ACPI only works on x86 and aarch64 */ - virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_ACPI); - /* gic is arm specific */ virQEMUCapsSet(qemuCaps, QEMU_CAPS_MACH_VIRT_GIC_VERSION); break; diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 04c7bfc193..0110174fea 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -150,7 +150,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ /* 75 */ QEMU_CAPS_ICH9_AHCI, /* -device ich9-ahci */ - QEMU_CAPS_NO_ACPI, /* -no-acpi */ + X_QEMU_CAPS_NO_ACPI, /* -no-acpi */ X_QEMU_CAPS_FSDEV_READONLY, /* -fsdev readonly supported */ QEMU_CAPS_VIRTIO_BLK_SCSI, /* virtio-blk-pci.scsi */ X_QEMU_CAPS_VIRTIO_BLK_SG_IO, /* SG_IO commands */ diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml index 3452b275a6..575e4fb98b 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml @@ -14,7 +14,6 @@ <flag name='pci-ohci'/> <flag name='usb-hub'/> <flag name='ich9-ahci'/> - <flag name='no-acpi'/> <flag name='virtio-blk-pci.scsi'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml index 5d36e7e49e..6657f7d393 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml @@ -19,7 +19,6 @@ <flag name='usb-redir'/> <flag name='usb-hub'/> <flag name='ich9-ahci'/> - <flag name='no-acpi'/> <flag name='virtio-blk-pci.scsi'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml index d2efacea98..f0dd035263 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml @@ -14,7 +14,6 @@ <flag name='pci-ohci'/> <flag name='usb-hub'/> <flag name='ich9-ahci'/> - <flag name='no-acpi'/> <flag name='virtio-blk-pci.scsi'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml index dd79dc309e..8c145d1926 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml @@ -19,7 +19,6 @@ <flag name='usb-redir'/> <flag name='usb-hub'/> <flag name='ich9-ahci'/> - <flag name='no-acpi'/> <flag name='virtio-blk-pci.scsi'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> diff --git a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml index 6e218b0c48..d8a49f0664 100644 --- a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml @@ -19,7 +19,6 @@ <flag name='usb-redir'/> <flag name='usb-hub'/> <flag name='ich9-ahci'/> - <flag name='no-acpi'/> <flag name='virtio-blk-pci.scsi'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml index d45dac7aec..783bf39f42 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml @@ -14,7 +14,6 @@ <flag name='pci-ohci'/> <flag name='usb-hub'/> <flag name='ich9-ahci'/> - <flag name='no-acpi'/> <flag name='virtio-blk-pci.scsi'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml index f3c77ac1bd..3c0dde9948 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml @@ -19,7 +19,6 @@ <flag name='usb-redir'/> <flag name='usb-hub'/> <flag name='ich9-ahci'/> - <flag name='no-acpi'/> <flag name='virtio-blk-pci.scsi'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml index c17da78d6d..2bd64c9546 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml @@ -13,7 +13,6 @@ <flag name='pci-ohci'/> <flag name='usb-hub'/> <flag name='ich9-ahci'/> - <flag name='no-acpi'/> <flag name='virtio-blk-pci.scsi'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml index 067f6632a6..f5977d3e7e 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml @@ -18,7 +18,6 @@ <flag name='usb-redir'/> <flag name='usb-hub'/> <flag name='ich9-ahci'/> - <flag name='no-acpi'/> <flag name='virtio-blk-pci.scsi'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> diff --git a/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml index be0f713798..d10b4a6b1e 100644 --- a/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml @@ -18,7 +18,6 @@ <flag name='usb-redir'/> <flag name='usb-hub'/> <flag name='ich9-ahci'/> - <flag name='no-acpi'/> <flag name='virtio-blk-pci.scsi'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml index 32aa56c4e9..6d3fbac8ab 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml @@ -17,7 +17,6 @@ <flag name='usb-redir'/> <flag name='usb-hub'/> <flag name='ich9-ahci'/> - <flag name='no-acpi'/> <flag name='virtio-blk-pci.scsi'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml index 9b2242d7c2..aa5361d4dd 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml @@ -18,7 +18,6 @@ <flag name='usb-redir'/> <flag name='usb-hub'/> <flag name='ich9-ahci'/> - <flag name='no-acpi'/> <flag name='virtio-blk-pci.scsi'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml index 37157189a2..05aa663b7b 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml @@ -17,7 +17,6 @@ <flag name='usb-redir'/> <flag name='usb-hub'/> <flag name='ich9-ahci'/> - <flag name='no-acpi'/> <flag name='virtio-blk-pci.scsi'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml index 3439050911..17a63d09e6 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml @@ -18,7 +18,6 @@ <flag name='usb-redir'/> <flag name='usb-hub'/> <flag name='ich9-ahci'/> - <flag name='no-acpi'/> <flag name='virtio-blk-pci.scsi'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> diff --git a/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml index d9028b1c37..c78c2ea293 100644 --- a/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml @@ -18,7 +18,6 @@ <flag name='usb-redir'/> <flag name='usb-hub'/> <flag name='ich9-ahci'/> - <flag name='no-acpi'/> <flag name='virtio-blk-pci.scsi'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> diff --git a/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml index 46b1d816b5..e55265ee0b 100644 --- a/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml @@ -18,7 +18,6 @@ <flag name='usb-redir'/> <flag name='usb-hub'/> <flag name='ich9-ahci'/> - <flag name='no-acpi'/> <flag name='virtio-blk-pci.scsi'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> diff --git a/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml index ee69898a54..d438e0a8c7 100644 --- a/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml @@ -17,7 +17,6 @@ <flag name='usb-redir'/> <flag name='usb-hub'/> <flag name='ich9-ahci'/> - <flag name='no-acpi'/> <flag name='virtio-blk-pci.scsi'/> <flag name='scsi-disk.channel'/> <flag name='scsi-block'/> -- 2.39.2

Rather than asserting a capability based on architecture, format the fallback parameter based on the presence of the newer capability and an explicit architecture check. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_command.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 189be55537..8d96f69f3d 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5936,9 +5936,11 @@ qemuBuildClockCommandLine(virCommand *cmd, * -no-hpet exists is VIR_TRISTATE_BOOL_YES, and when -no-hpet * doesn't exist is VIR_TRISTATE_BOOL_NO. "confusing"? "yes"! */ - if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NO_HPET)) { - if (def->clock.timers[i]->present == VIR_TRISTATE_BOOL_NO) - virCommandAddArg(cmd, "-no-hpet"); + if (def->clock.timers[i]->present == VIR_TRISTATE_BOOL_NO && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_MACHINE_HPET) && + (def->os.arch == VIR_ARCH_I686 || + def->os.arch == VIR_ARCH_X86_64)) { + virCommandAddArg(cmd, "-no-hpet"); } break; } -- 2.39.2

All uses were replaced by an explicit architecture check. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_capabilities.c | 15 +++------------ src/qemu/qemu_capabilities.h | 2 +- tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_5.2.0.x86_64.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.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml | 1 - 12 files changed, 4 insertions(+), 23 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index fe0f2f1c4d..4c1f6d11ed 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -110,7 +110,7 @@ VIR_ENUM_IMPL(virQEMUCaps, /* 30 */ "vhost-net", /* X_QEMU_CAPS_VHOST_NET */ "rtc-td-hack", /* X_QEMU_CAPS_RTC_TD_HACK */ - "no-hpet", /* QEMU_CAPS_NO_HPET */ + "no-hpet", /* X_QEMU_CAPS_NO_HPET */ "no-kvm-pit", /* X_QEMU_CAPS_NO_KVM_PIT */ "tdf", /* X_QEMU_CAPS_TDF */ @@ -5473,12 +5473,6 @@ void virQEMUCapsInitQMPBasicArch(virQEMUCaps *qemuCaps) { switch (qemuCaps->arch) { - case VIR_ARCH_I686: - case VIR_ARCH_X86_64: - /* HPET is x86 specific */ - virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_HPET); - break; - case VIR_ARCH_AARCH64: /* gic is arm specific */ virQEMUCapsSet(qemuCaps, QEMU_CAPS_MACH_VIRT_GIC_VERSION); @@ -5491,6 +5485,8 @@ virQEMUCapsInitQMPBasicArch(virQEMUCaps *qemuCaps) virQEMUCapsSet(qemuCaps, QEMU_CAPS_LOADPARM); break; + case VIR_ARCH_I686: + case VIR_ARCH_X86_64: case VIR_ARCH_ALPHA: case VIR_ARCH_PPC: case VIR_ARCH_PPCEMB: @@ -5568,11 +5564,6 @@ virQEMUCapsInitProcessCapsInterlock(virQEMUCaps *qemuCaps) * on a not entirely related witness. */ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_JSON)) virQEMUCapsSet(qemuCaps, QEMU_CAPS_COMPAT_DEPRECATED); - - /* Modern-style config of the HPET timer overrides support for the '-no-hpet' - * option */ - if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_MACHINE_HPET)) - virQEMUCapsClear(qemuCaps, QEMU_CAPS_NO_HPET); } diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 0110174fea..2bb7f1d87d 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -88,7 +88,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ /* 30 */ X_QEMU_CAPS_VHOST_NET, /* vhost-net support available */ X_QEMU_CAPS_RTC_TD_HACK, /* -rtc-td-hack available */ - QEMU_CAPS_NO_HPET, /* -no-hpet flag is supported */ + X_QEMU_CAPS_NO_HPET, /* -no-hpet flag is supported */ X_QEMU_CAPS_NO_KVM_PIT, /* -no-kvm-pit-reinjection supported */ X_QEMU_CAPS_TDF, /* -tdf flag (user-mode pit catchup) */ diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml index 6657f7d393..e36983da58 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml @@ -5,7 +5,6 @@ <selfvers>0</selfvers> <flag name='kvm'/> <flag name='sdl'/> - <flag name='no-hpet'/> <flag name='spice'/> <flag name='hda-duplex'/> <flag name='ccid-emulated'/> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml index 8c145d1926..89a083dda8 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml @@ -5,7 +5,6 @@ <selfvers>0</selfvers> <flag name='kvm'/> <flag name='sdl'/> - <flag name='no-hpet'/> <flag name='spice'/> <flag name='hda-duplex'/> <flag name='ccid-emulated'/> diff --git a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml index d8a49f0664..f02e843248 100644 --- a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml @@ -5,7 +5,6 @@ <selfvers>0</selfvers> <flag name='kvm'/> <flag name='sdl'/> - <flag name='no-hpet'/> <flag name='spice'/> <flag name='hda-duplex'/> <flag name='ccid-emulated'/> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml index 3c0dde9948..293447644e 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml @@ -5,7 +5,6 @@ <selfvers>0</selfvers> <flag name='kvm'/> <flag name='sdl'/> - <flag name='no-hpet'/> <flag name='spice'/> <flag name='hda-duplex'/> <flag name='ccid-emulated'/> diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml index f5977d3e7e..fc6a3ffd4a 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml @@ -5,7 +5,6 @@ <selfvers>0</selfvers> <flag name='kvm'/> <flag name='sdl'/> - <flag name='no-hpet'/> <flag name='spice'/> <flag name='hda-duplex'/> <flag name='ccid-emulated'/> diff --git a/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml index d10b4a6b1e..e5fbc91821 100644 --- a/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml @@ -5,7 +5,6 @@ <selfvers>0</selfvers> <flag name='kvm'/> <flag name='sdl'/> - <flag name='no-hpet'/> <flag name='spice'/> <flag name='hda-duplex'/> <flag name='ccid-emulated'/> diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml index aa5361d4dd..fb1ac7a646 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml @@ -5,7 +5,6 @@ <selfvers>0</selfvers> <flag name='kvm'/> <flag name='sdl'/> - <flag name='no-hpet'/> <flag name='spice'/> <flag name='hda-duplex'/> <flag name='ccid-emulated'/> diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml index 17a63d09e6..7b77347a31 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml @@ -5,7 +5,6 @@ <selfvers>0</selfvers> <flag name='kvm'/> <flag name='sdl'/> - <flag name='no-hpet'/> <flag name='spice'/> <flag name='hda-duplex'/> <flag name='ccid-emulated'/> diff --git a/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml index c78c2ea293..b9d5a665a9 100644 --- a/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml @@ -5,7 +5,6 @@ <selfvers>0</selfvers> <flag name='kvm'/> <flag name='sdl'/> - <flag name='no-hpet'/> <flag name='spice'/> <flag name='hda-duplex'/> <flag name='ccid-emulated'/> diff --git a/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml index e55265ee0b..b79700d4f8 100644 --- a/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml @@ -5,7 +5,6 @@ <selfvers>0</selfvers> <flag name='kvm'/> <flag name='sdl'/> - <flag name='no-hpet'/> <flag name='spice'/> <flag name='hda-duplex'/> <flag name='ccid-emulated'/> -- 2.39.2

testUpdateQEMUCaps calls virQEMUCapsInitQMPBasicArch which already sets it. Purge the capability from the testing code. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tests/qemuxml2argvtest.c | 72 ++++++++++++++-------------------------- 1 file changed, 24 insertions(+), 48 deletions(-) diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index c0afb8cf27..757d3ee957 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -2458,76 +2458,52 @@ mymain(void) QEMU_CAPS_DEVICE_VIRTIO_MMIO, QEMU_CAPS_KVM); DO_TEST_GIC("aarch64-gic-none", GIC_NONE, - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_GIC("aarch64-gic-none-v2", GIC_V2, - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_GIC("aarch64-gic-none-v3", GIC_V3, - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_GIC("aarch64-gic-none-both", GIC_BOTH, - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); - DO_TEST_GIC("aarch64-gic-none-tcg", GIC_BOTH, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); + DO_TEST_FULL("aarch64-gic-none-tcg", "", ARG_GIC, GIC_BOTH, ARG_END); DO_TEST_GIC("aarch64-gic-default", GIC_NONE, - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_GIC("aarch64-gic-default-v2", GIC_V2, - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_GIC("aarch64-gic-default-v3", GIC_V3, - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_GIC("aarch64-gic-default-both", GIC_BOTH, - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_GIC("aarch64-gic-v2", GIC_NONE, - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_GIC("aarch64-gic-v2", GIC_V2, - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_GIC("aarch64-gic-v2", GIC_V3, - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_GIC("aarch64-gic-v2", GIC_BOTH, - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_GIC("aarch64-gic-v3", GIC_NONE, - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_GIC("aarch64-gic-v3", GIC_V2, - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_GIC("aarch64-gic-v3", GIC_V3, - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_GIC("aarch64-gic-v3", GIC_BOTH, - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_GIC("aarch64-gic-host", GIC_NONE, - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_GIC("aarch64-gic-host", GIC_V2, - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_GIC("aarch64-gic-host", GIC_V3, - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_GIC("aarch64-gic-host", GIC_BOTH, - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_PARSE_ERROR("aarch64-gic-invalid", - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_PARSE_ERROR("aarch64-gic-not-virt", - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_PARSE_ERROR("aarch64-gic-not-arm", - QEMU_CAPS_KVM, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + QEMU_CAPS_KVM); DO_TEST_CAPS_ARCH_LATEST("aarch64-kvm-32-on-64", "aarch64"); DO_TEST("aarch64-pci-serial", QEMU_CAPS_DEVICE_PCI_SERIAL, -- 2.39.2

QEMU_CAPS_MACH_VIRT_GIC_VERSION is always asserted for VIR_ARCH_AARCH64. Note that this patch is a direct conversion of the logic originally residing in the capabilities code. A better coversion would be (based on whether it is available for just AARCH64 or also ARM) to base it on the guest architecture. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_command.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 8d96f69f3d..41abecdb05 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6636,8 +6636,7 @@ qemuAppendDomainFeaturesMachineParam(virBuffer *buf, virBufferAsprintf(buf, ",smm=%s", virTristateSwitchTypeToString(smm)); if (def->features[VIR_DOMAIN_FEATURE_GIC] == VIR_TRISTATE_SWITCH_ON) { - bool hasGICVersionOption = virQEMUCapsGet(qemuCaps, - QEMU_CAPS_MACH_VIRT_GIC_VERSION); + bool hasGICVersionOption = virQEMUCapsGetArch(qemuCaps) == VIR_ARCH_AARCH64; switch ((virGICVersion) def->gic_version) { case VIR_GIC_VERSION_2: -- 2.39.2

Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_capabilities.c | 8 ++------ src/qemu/qemu_capabilities.h | 2 +- tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml | 1 - 8 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 4c1f6d11ed..9777f5b112 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -341,7 +341,7 @@ VIR_ENUM_IMPL(virQEMUCaps, /* 195 */ "e1000", /* QEMU_CAPS_DEVICE_E1000 */ "virtio-net", /* QEMU_CAPS_DEVICE_VIRTIO_NET */ - "gic-version", /* QEMU_CAPS_MACH_VIRT_GIC_VERSION */ + "gic-version", /* X_QEMU_CAPS_MACH_VIRT_GIC_VERSION */ "incoming-defer", /* X_QEMU_CAPS_INCOMING_DEFER */ "virtio-gpu", /* QEMU_CAPS_DEVICE_VIRTIO_GPU */ @@ -5473,11 +5473,6 @@ void virQEMUCapsInitQMPBasicArch(virQEMUCaps *qemuCaps) { switch (qemuCaps->arch) { - case VIR_ARCH_AARCH64: - /* gic is arm specific */ - virQEMUCapsSet(qemuCaps, QEMU_CAPS_MACH_VIRT_GIC_VERSION); - break; - case VIR_ARCH_S390: case VIR_ARCH_S390X: virQEMUCapsSet(qemuCaps, QEMU_CAPS_AES_KEY_WRAP); @@ -5485,6 +5480,7 @@ virQEMUCapsInitQMPBasicArch(virQEMUCaps *qemuCaps) virQEMUCapsSet(qemuCaps, QEMU_CAPS_LOADPARM); break; + case VIR_ARCH_AARCH64: case VIR_ARCH_I686: case VIR_ARCH_X86_64: case VIR_ARCH_ALPHA: diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 2bb7f1d87d..7f4884fc93 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -319,7 +319,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ /* 195 */ QEMU_CAPS_DEVICE_E1000, /* -device e1000 */ QEMU_CAPS_DEVICE_VIRTIO_NET, /* -device virtio-net-* */ - QEMU_CAPS_MACH_VIRT_GIC_VERSION, /* -machine virt,gic-version */ + X_QEMU_CAPS_MACH_VIRT_GIC_VERSION, /* -machine virt,gic-version */ X_QEMU_CAPS_INCOMING_DEFER, /* -incoming defer and migrate_incoming */ QEMU_CAPS_DEVICE_VIRTIO_GPU, /* -device virtio-gpu-* */ diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml index 575e4fb98b..e0cc16e730 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml @@ -55,7 +55,6 @@ <flag name='rtl8139'/> <flag name='e1000'/> <flag name='virtio-net'/> - <flag name='gic-version'/> <flag name='virtio-gpu'/> <flag name='virtio-keyboard'/> <flag name='virtio-mouse'/> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml index f0dd035263..52529690c3 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml @@ -57,7 +57,6 @@ <flag name='rtl8139'/> <flag name='e1000'/> <flag name='virtio-net'/> - <flag name='gic-version'/> <flag name='virtio-gpu'/> <flag name='virtio-keyboard'/> <flag name='virtio-mouse'/> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml index 783bf39f42..8657478d86 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml @@ -56,7 +56,6 @@ <flag name='rtl8139'/> <flag name='e1000'/> <flag name='virtio-net'/> - <flag name='gic-version'/> <flag name='virtio-gpu'/> <flag name='virtio-keyboard'/> <flag name='virtio-mouse'/> diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml index 2bd64c9546..a71b955266 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml @@ -55,7 +55,6 @@ <flag name='rtl8139'/> <flag name='e1000'/> <flag name='virtio-net'/> - <flag name='gic-version'/> <flag name='virtio-gpu'/> <flag name='virtio-keyboard'/> <flag name='virtio-mouse'/> diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml index 6d3fbac8ab..c41bf8fefa 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml @@ -60,7 +60,6 @@ <flag name='rtl8139'/> <flag name='e1000'/> <flag name='virtio-net'/> - <flag name='gic-version'/> <flag name='virtio-gpu'/> <flag name='virtio-keyboard'/> <flag name='virtio-mouse'/> diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml index 05aa663b7b..73dd78b555 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml @@ -60,7 +60,6 @@ <flag name='rtl8139'/> <flag name='e1000'/> <flag name='virtio-net'/> - <flag name='gic-version'/> <flag name='virtio-gpu'/> <flag name='virtio-keyboard'/> <flag name='virtio-mouse'/> -- 2.39.2

QEMU_CAPS_AES_KEY_WRAP, QEMU_CAPS_DEA_KEY_WRAP and QEMU_CAPS_LOADPARM are always asserted via virQEMUCapsInitQMPBasicArch thus don't need to be explicitly enabled by tests. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tests/qemuxml2argvtest.c | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 757d3ee957..cbb57523e9 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -2599,54 +2599,39 @@ mymain(void) DO_TEST_CAPS_LATEST("memory-hotplug-virtio-mem"); DO_TEST("machine-aeskeywrap-on-caps", - QEMU_CAPS_AES_KEY_WRAP, - QEMU_CAPS_DEA_KEY_WRAP, QEMU_CAPS_VIRTIO_SCSI); DO_TEST("machine-aeskeywrap-on-cap", - QEMU_CAPS_AES_KEY_WRAP, QEMU_CAPS_VIRTIO_SCSI); DO_TEST("machine-aeskeywrap-off-caps", - QEMU_CAPS_AES_KEY_WRAP, QEMU_CAPS_DEA_KEY_WRAP, QEMU_CAPS_VIRTIO_SCSI); DO_TEST("machine-aeskeywrap-off-cap", - QEMU_CAPS_AES_KEY_WRAP, QEMU_CAPS_VIRTIO_SCSI); DO_TEST("machine-deakeywrap-on-caps", - QEMU_CAPS_AES_KEY_WRAP, QEMU_CAPS_DEA_KEY_WRAP, QEMU_CAPS_VIRTIO_SCSI); DO_TEST("machine-deakeywrap-on-cap", - QEMU_CAPS_DEA_KEY_WRAP, QEMU_CAPS_VIRTIO_SCSI); DO_TEST("machine-deakeywrap-off-caps", - QEMU_CAPS_AES_KEY_WRAP, QEMU_CAPS_DEA_KEY_WRAP, QEMU_CAPS_VIRTIO_SCSI); DO_TEST("machine-deakeywrap-off-cap", - QEMU_CAPS_DEA_KEY_WRAP, QEMU_CAPS_VIRTIO_SCSI); DO_TEST("machine-keywrap-none-caps", - QEMU_CAPS_AES_KEY_WRAP, QEMU_CAPS_DEA_KEY_WRAP, QEMU_CAPS_VIRTIO_SCSI); DO_TEST("machine-keywrap-none", QEMU_CAPS_VIRTIO_SCSI); - DO_TEST("machine-loadparm-s390", - QEMU_CAPS_LOADPARM); - DO_TEST("machine-loadparm-net-s390", - QEMU_CAPS_LOADPARM); - DO_TEST("machine-loadparm-multiple-disks-nets-s390", - QEMU_CAPS_LOADPARM); - DO_TEST_PARSE_ERROR("machine-loadparm-s390-char-invalid", - QEMU_CAPS_LOADPARM); - DO_TEST_PARSE_ERROR("machine-loadparm-s390-len-invalid", - QEMU_CAPS_LOADPARM); + DO_TEST_NOCAPS("machine-loadparm-s390"); + DO_TEST_NOCAPS("machine-loadparm-net-s390"); + DO_TEST_NOCAPS("machine-loadparm-multiple-disks-nets-s390"); + DO_TEST_PARSE_ERROR_NOCAPS("machine-loadparm-s390-char-invalid"); + DO_TEST_PARSE_ERROR_NOCAPS("machine-loadparm-s390-len-invalid"); DO_TEST_NOCAPS("qemu-ns-domain-ns0"); DO_TEST_NOCAPS("qemu-ns-domain-commandline"); -- 2.39.2

Use the guest architecture to decide whether to format 'aes-key-wrap'/'dea-key-wrap' rather than QEMU_CAPS_AES_KEY_WRAP/QEMU_CAPS_DEA_KEY_WRAP which were set based on architecture. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_command.c | 50 ++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 28 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 41abecdb05..34ce27bb79 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6534,38 +6534,33 @@ qemuBuildCpuCommandLine(virCommand *cmd, } -static bool -qemuAppendKeyWrapMachineParm(virBuffer *buf, virQEMUCaps *qemuCaps, - virQEMUCapsFlags flag, const char *pname, - virTristateSwitch pstate) +static int +qemuAppendKeyWrapMachineParms(virBuffer *buf, + const virDomainDef *def) { - if (pstate != VIR_TRISTATE_SWITCH_ABSENT) { - if (!virQEMUCapsGet(qemuCaps, flag)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("%s is not available with this QEMU binary"), pname); - return false; - } + if (!def->keywrap) + return 0; - virBufferAsprintf(buf, ",%s=%s", pname, - virTristateSwitchTypeToString(pstate)); - } + if (def->keywrap->aes == VIR_TRISTATE_SWITCH_ABSENT && + def->keywrap->dea == VIR_TRISTATE_SWITCH_ABSENT) + return 0; - return true; -} + if (def->os.arch != VIR_ARCH_S390 && + def->os.arch != VIR_ARCH_S390X) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("'aes-key-wrap'/'dea-key-wrap' is not available on this architecture")); + return -1; + } -static bool -qemuAppendKeyWrapMachineParms(virBuffer *buf, virQEMUCaps *qemuCaps, - const virDomainKeyWrapDef *keywrap) -{ - if (!qemuAppendKeyWrapMachineParm(buf, qemuCaps, QEMU_CAPS_AES_KEY_WRAP, - "aes-key-wrap", keywrap->aes)) - return false; + if (def->keywrap->aes != VIR_TRISTATE_SWITCH_ABSENT) + virBufferAsprintf(buf, ",aes-key-wrap=%s", + virTristateSwitchTypeToString(def->keywrap->aes)); - if (!qemuAppendKeyWrapMachineParm(buf, qemuCaps, QEMU_CAPS_DEA_KEY_WRAP, - "dea-key-wrap", keywrap->dea)) - return false; + if (def->keywrap->dea != VIR_TRISTATE_SWITCH_ABSENT) + virBufferAsprintf(buf, ",dea-key-wrap=%s", + virTristateSwitchTypeToString(def->keywrap->dea)); - return true; + return 0; } @@ -6865,8 +6860,7 @@ qemuBuildMachineCommandLine(virCommand *cmd, */ virBufferAddLit(&buf, ",usb=off"); - if (def->keywrap && - !qemuAppendKeyWrapMachineParms(&buf, qemuCaps, def->keywrap)) + if (qemuAppendKeyWrapMachineParms(&buf, def) < 0) return -1; if (qemuAppendDomainFeaturesMachineParam(&buf, def, qemuCaps) < 0) -- 2.39.2

Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_capabilities.c | 6 ++---- src/qemu/qemu_capabilities.h | 4 ++-- tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml | 2 -- tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml | 2 -- tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml | 2 -- 5 files changed, 4 insertions(+), 12 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 9777f5b112..50c303d98f 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -322,10 +322,10 @@ VIR_ENUM_IMPL(virQEMUCaps, "qxl-vga.vgamem_mb", /* X_QEMU_CAPS_QXL_VGA_VGAMEM */ "pc-dimm", /* QEMU_CAPS_DEVICE_PC_DIMM */ "machine-vmport-opt", /* QEMU_CAPS_MACHINE_VMPORT_OPT */ - "aes-key-wrap", /* QEMU_CAPS_AES_KEY_WRAP */ + "aes-key-wrap", /* X_QEMU_CAPS_AES_KEY_WRAP */ /* 185 */ - "dea-key-wrap", /* QEMU_CAPS_DEA_KEY_WRAP */ + "dea-key-wrap", /* X_QEMU_CAPS_DEA_KEY_WRAP */ "pci-serial", /* QEMU_CAPS_DEVICE_PCI_SERIAL */ "aarch64-off", /* X_QEMU_CAPS_CPU_AARCH64_OFF */ "vhost-user-multiqueue", /* X_QEMU_CAPS_VHOSTUSER_MULTIQUEUE */ @@ -5475,8 +5475,6 @@ virQEMUCapsInitQMPBasicArch(virQEMUCaps *qemuCaps) switch (qemuCaps->arch) { case VIR_ARCH_S390: case VIR_ARCH_S390X: - virQEMUCapsSet(qemuCaps, QEMU_CAPS_AES_KEY_WRAP); - virQEMUCapsSet(qemuCaps, QEMU_CAPS_DEA_KEY_WRAP); virQEMUCapsSet(qemuCaps, QEMU_CAPS_LOADPARM); break; diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 7f4884fc93..fa068dcbff 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -300,10 +300,10 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ X_QEMU_CAPS_QXL_VGA_VGAMEM, /* -device qxl-vga.vgamem_mb */ QEMU_CAPS_DEVICE_PC_DIMM, /* pc-dimm device */ QEMU_CAPS_MACHINE_VMPORT_OPT, /* -machine xxx,vmport=on/off/auto */ - QEMU_CAPS_AES_KEY_WRAP, /* -machine aes_key_wrap */ + X_QEMU_CAPS_AES_KEY_WRAP, /* -machine aes_key_wrap */ /* 185 */ - QEMU_CAPS_DEA_KEY_WRAP, /* -machine dea_key_wrap */ + X_QEMU_CAPS_DEA_KEY_WRAP, /* -machine dea_key_wrap */ QEMU_CAPS_DEVICE_PCI_SERIAL, /* -device pci-serial */ X_QEMU_CAPS_CPU_AARCH64_OFF, /* -cpu ...,aarch64=off */ X_QEMU_CAPS_VHOSTUSER_MULTIQUEUE, /* vhost-user with -netdev queues= */ diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml b/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml index cd13201c68..c3fd0e4ce3 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml @@ -23,8 +23,6 @@ <flag name='vfio-pci'/> <flag name='enable-fips'/> <flag name='migrate-rdma'/> - <flag name='aes-key-wrap'/> - <flag name='dea-key-wrap'/> <flag name='virtio-net'/> <flag name='virtio-gpu'/> <flag name='virtio-gpu.virgl'/> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml b/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml index ac51cd4c1a..0a74ec9f2c 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml @@ -22,8 +22,6 @@ <flag name='pci-bridge'/> <flag name='vfio-pci'/> <flag name='migrate-rdma'/> - <flag name='aes-key-wrap'/> - <flag name='dea-key-wrap'/> <flag name='virtio-net'/> <flag name='virtio-gpu'/> <flag name='virtio-gpu.virgl'/> diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml b/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml index af03684556..ee9516734a 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml @@ -22,8 +22,6 @@ <flag name='pci-bridge'/> <flag name='vfio-pci'/> <flag name='migrate-rdma'/> - <flag name='aes-key-wrap'/> - <flag name='dea-key-wrap'/> <flag name='virtio-net'/> <flag name='virtio-gpu'/> <flag name='virtio-gpu.virgl'/> -- 2.39.2

Check the architecture of the guest rather than relying on QEMU_CAPS_LOADPARM which is set based on architecture. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_command.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 34ce27bb79..7adcac418f 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6570,6 +6570,10 @@ qemuAppendLoadparmMachineParm(virBuffer *buf, { size_t i = 0; + if (def->os.arch != VIR_ARCH_S390 && + def->os.arch != VIR_ARCH_S390X) + return; + for (i = 0; i < def->ndisks; i++) { virDomainDiskDef *disk = def->disks[i]; @@ -6893,8 +6897,7 @@ qemuBuildMachineCommandLine(virCommand *cmd, virBufferAsprintf(&buf, ",max-cpu-compat=%s", cpu->model); } - if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_LOADPARM)) - qemuAppendLoadparmMachineParm(&buf, def); + qemuAppendLoadparmMachineParm(&buf, def); if (def->sec) { switch ((virDomainLaunchSecurity) def->sec->sectype) { -- 2.39.2

Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_capabilities.c | 5 +---- src/qemu/qemu_capabilities.h | 2 +- tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml | 1 - 5 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 50c303d98f..76fb739fbc 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -431,7 +431,7 @@ VIR_ENUM_IMPL(virQEMUCaps, /* 260 */ "virtio.ats", /* X_QEMU_CAPS_VIRTIO_PCI_ATS */ - "loadparm", /* QEMU_CAPS_LOADPARM */ + "loadparm", /* X_QEMU_CAPS_LOADPARM */ "spapr-pci-host-bridge", /* QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE */ "spapr-pci-host-bridge.numa_node", /* QEMU_CAPS_SPAPR_PCI_HOST_BRIDGE_NUMA_NODE */ "vnc-multi-servers", /* X_QEMU_CAPS_VNC_MULTI_SERVERS */ @@ -5475,9 +5475,6 @@ virQEMUCapsInitQMPBasicArch(virQEMUCaps *qemuCaps) switch (qemuCaps->arch) { case VIR_ARCH_S390: case VIR_ARCH_S390X: - virQEMUCapsSet(qemuCaps, QEMU_CAPS_LOADPARM); - break; - case VIR_ARCH_AARCH64: case VIR_ARCH_I686: case VIR_ARCH_X86_64: diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index fa068dcbff..dfa0b806de 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -410,7 +410,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ /* 260 */ X_QEMU_CAPS_VIRTIO_PCI_ATS, /* virtio-*-pci.ats */ - QEMU_CAPS_LOADPARM, /* -machine loadparm */ + X_QEMU_CAPS_LOADPARM, /* -machine loadparm */ QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, /* -device spapr-pci-host-bridge */ QEMU_CAPS_SPAPR_PCI_HOST_BRIDGE_NUMA_NODE, /* spapr-pci-host-bridge.numa_node= */ X_QEMU_CAPS_VNC_MULTI_SERVERS, /* -vnc vnc=unix:/path */ diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml b/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml index c3fd0e4ce3..08d0993ba3 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml @@ -35,7 +35,6 @@ <flag name='vhost-scsi'/> <flag name='query-cpu-model-expansion'/> <flag name='query-cpu-definitions'/> - <flag name='loadparm'/> <flag name='chardev-reconnect'/> <flag name='vxhs'/> <flag name='sclplmconsole'/> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml b/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml index 0a74ec9f2c..3ec0bd4c32 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml @@ -34,7 +34,6 @@ <flag name='vhost-scsi'/> <flag name='query-cpu-model-expansion'/> <flag name='query-cpu-definitions'/> - <flag name='loadparm'/> <flag name='chardev-reconnect'/> <flag name='sclplmconsole'/> <flag name='virtio-gpu-ccw'/> diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml b/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml index ee9516734a..89420c1e9b 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml @@ -34,7 +34,6 @@ <flag name='vhost-scsi'/> <flag name='query-cpu-model-expansion'/> <flag name='query-cpu-definitions'/> - <flag name='loadparm'/> <flag name='chardev-reconnect'/> <flag name='sclplmconsole'/> <flag name='virtio-gpu-ccw'/> -- 2.39.2

The function doesn't set any capability and we don't want to add arch-dependent always-peresent capabilities in the future. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_capabilities.c | 57 ------------------------------------ src/qemu/qemu_capspriv.h | 3 -- tests/qemuhotplugtest.c | 2 -- tests/qemuxml2argvtest.c | 2 -- tests/qemuxml2xmltest.c | 3 -- 5 files changed, 67 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 76fb739fbc..18c4c0b1cd 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -5462,61 +5462,6 @@ virQEMUCapsInitQMPArch(virQEMUCaps *qemuCaps, } -/** - * virQEMUCapsInitQMPBasicArch: - * @qemuCaps: QEMU capabilities - * - * Initialize @qemuCaps with basic always present and architecture-dependent - * capabilities. - */ -void -virQEMUCapsInitQMPBasicArch(virQEMUCaps *qemuCaps) -{ - switch (qemuCaps->arch) { - case VIR_ARCH_S390: - case VIR_ARCH_S390X: - case VIR_ARCH_AARCH64: - case VIR_ARCH_I686: - case VIR_ARCH_X86_64: - case VIR_ARCH_ALPHA: - case VIR_ARCH_PPC: - case VIR_ARCH_PPCEMB: - case VIR_ARCH_SH4: - case VIR_ARCH_SH4EB: - case VIR_ARCH_RISCV32: - case VIR_ARCH_RISCV64: - case VIR_ARCH_SPARC: - case VIR_ARCH_SPARC64: - case VIR_ARCH_ARMV6L: - case VIR_ARCH_ARMV7L: - case VIR_ARCH_ARMV7B: - case VIR_ARCH_CRIS: - case VIR_ARCH_ITANIUM: - case VIR_ARCH_LM32: - case VIR_ARCH_M68K: - case VIR_ARCH_MICROBLAZE: - case VIR_ARCH_MICROBLAZEEL: - case VIR_ARCH_MIPS: - case VIR_ARCH_MIPSEL: - case VIR_ARCH_MIPS64: - case VIR_ARCH_MIPS64EL: - case VIR_ARCH_OR32: - case VIR_ARCH_PARISC: - case VIR_ARCH_PARISC64: - case VIR_ARCH_PPCLE: - case VIR_ARCH_PPC64: - case VIR_ARCH_PPC64LE: - case VIR_ARCH_UNICORE32: - case VIR_ARCH_XTENSA: - case VIR_ARCH_XTENSAEB: - case VIR_ARCH_NONE: - case VIR_ARCH_LAST: - default: - break; - } -} - - /** * virQEMUCapsInitQMPVersionCaps: * @qemuCaps: QEMU capabilities @@ -5666,8 +5611,6 @@ virQEMUCapsInitQMPMonitor(virQEMUCaps *qemuCaps, if (virQEMUCapsInitQMPArch(qemuCaps, mon) < 0) return -1; - virQEMUCapsInitQMPBasicArch(qemuCaps); - /* initiate all capabilities based on qemu version */ virQEMUCapsInitQMPVersionCaps(qemuCaps); diff --git a/src/qemu/qemu_capspriv.h b/src/qemu/qemu_capspriv.h index 720435f762..60fdf02f06 100644 --- a/src/qemu/qemu_capspriv.h +++ b/src/qemu/qemu_capspriv.h @@ -66,9 +66,6 @@ virQEMUCapsInitCPUModel(virQEMUCaps *qemuCaps, virCPUDef *cpu, bool migratable); -void -virQEMUCapsInitQMPBasicArch(virQEMUCaps *qemuCaps); - qemuMonitorCPUModelInfo * virQEMUCapsGetCPUModelInfo(virQEMUCaps *qemuCaps, virDomainVirtType type); diff --git a/tests/qemuhotplugtest.c b/tests/qemuhotplugtest.c index 3b54a9e957..6a36856d8a 100644 --- a/tests/qemuhotplugtest.c +++ b/tests/qemuhotplugtest.c @@ -70,8 +70,6 @@ qemuHotplugCreateObjects(virDomainXMLOption *xmlopt, priv->qemuCaps = virQEMUCapsNew(); - virQEMUCapsInitQMPBasicArch(priv->qemuCaps); - virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_VIRTIO_SCSI); virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_DEVICE_USB_STORAGE); virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_DEVICE_IVSHMEM_PLAIN); diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index cbb57523e9..740d7a5db5 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -345,8 +345,6 @@ testUpdateQEMUCaps(const struct testQemuInfo *info, virQEMUCapsSetArch(info->qemuCaps, arch); - virQEMUCapsInitQMPBasicArch(info->qemuCaps); - if (testAddCPUModels(info->qemuCaps, !!(info->flags & FLAG_SKIP_LEGACY_CPUS)) < 0) return -1; diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 473031df08..a1f8b004fb 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -41,9 +41,6 @@ testXML2XMLCommon(const struct testQemuInfo *info) else driver.caps = linuxCaps; - if (!(info->flags & FLAG_REAL_CAPS)) - virQEMUCapsInitQMPBasicArch(info->qemuCaps); - virFileCacheClear(driver.qemuCapsCache); if (info->args.hostOS == HOST_OS_MACOS) -- 2.39.2

On a Monday in 2023, Peter Krempa wrote:
Remove everything out of virQEMUCapsInitQMPBasicArch and in the process fix a bug.
Peter Krempa (15): qemu: validate: Fix logic for validating precence of the HPET timer NEWS: Mention bug in validation of HPET timer qemu: command: Replace check using QEMU_CAPS_NO_ACPI with architecture check qemu: capabilities: Retire QEMU_CAPS_NO_ACPI qemu: command: Format '-no-hpet' based on architecture check qemu: capabilities: Retire QEMU_CAPS_NO_HPET qemuxml2argvtest: Don't set QEMU_CAPS_MACH_VIRT_GIC_VERSION qemu: command: Replace caps check for QEMU_CAPS_MACH_VIRT_GIC_VERSION by arch check qemu: capabilities: Retire QEMU_CAPS_MACH_VIRT_GIC_VERSION qemuxml2argvtest: Remove always asserted s390 capabilities qemuAppendKeyWrapMachineParms: Format "keywrap" arguments based on architecture qemu: capabilities: Retire QEMU_CAPS_AES_KEY_WRAP and QEMU_CAPS_DEA_KEY_WRAP qemuAppendLoadparmMachineParm: Format 'loadparm' based on architecture qemu: capabilities: Retire QEMU_CAPS_LOADPARM qemu: capabilities: Remove unused virQEMUCapsInitQMPBasicArch
NEWS.rst | 6 ++ src/qemu/qemu_capabilities.c | 93 ++--------------- src/qemu/qemu_capabilities.h | 12 +-- src/qemu/qemu_capspriv.h | 3 - src/qemu/qemu_command.c | 72 +++++++------- src/qemu/qemu_validate.c | 14 +-- .../caps_4.2.0.aarch64.xml | 2 - .../qemucapabilitiesdata/caps_4.2.0.s390x.xml | 3 - .../caps_4.2.0.x86_64.xml | 2 - .../caps_5.0.0.aarch64.xml | 2 - .../caps_5.0.0.x86_64.xml | 2 - .../caps_5.1.0.x86_64.xml | 2 - .../caps_5.2.0.aarch64.xml | 2 - .../qemucapabilitiesdata/caps_5.2.0.s390x.xml | 3 - .../caps_5.2.0.x86_64.xml | 2 - .../caps_6.0.0.aarch64.xml | 2 - .../qemucapabilitiesdata/caps_6.0.0.s390x.xml | 3 - .../caps_6.0.0.x86_64.xml | 2 - .../caps_6.1.0.x86_64.xml | 2 - .../caps_6.2.0.aarch64.xml | 2 - .../caps_6.2.0.x86_64.xml | 2 - .../caps_7.0.0.aarch64.xml | 2 - .../caps_7.0.0.x86_64.xml | 2 - .../caps_7.1.0.x86_64.xml | 2 - .../caps_7.2.0.x86_64.xml | 2 - .../caps_8.0.0.x86_64.xml | 1 - tests/qemuhotplugtest.c | 2 - .../q35-virt-manager-basic.x86_64-4.2.0.args | 1 - .../q35-virt-manager-basic.x86_64-latest.args | 2 +- .../q35-virt-manager-basic.xml | 2 +- tests/qemuxml2argvtest.c | 99 ++++++------------- .../q35-virt-manager-basic.x86_64-latest.xml | 2 +- tests/qemuxml2xmltest.c | 3 - 33 files changed, 93 insertions(+), 260 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano
participants (2)
-
Ján Tomko
-
Peter Krempa