[libvirt PATCH 0/4] Revert MTE support

See the subthread starting at [1] for the rationale. The QEMU commit that (temporarily) reverted KVM support is at [2]. [1] https://listman.redhat.com/archives/libvir-list/2023-May/239911.html [2] https://gitlab.com/qemu-project/qemu/-/commit/d009607d08d22f91ca399b72828c66... Andrea Bolognani (4): Revert "qemu: Generate command line for MTE feature" Revert "qemu: Validate MTE feature" Revert "qemu:: Introduce QEMU_CAPS_MACHINE_VIRT_MTE capability" Revert "conf: Introduce MTE domain feature" docs/formatdomain.rst | 7 ----- src/conf/domain_conf.c | 6 +---- src/conf/domain_conf.h | 1 - src/conf/schemas/domaincommon.rng | 5 ---- src/qemu/qemu_capabilities.c | 2 -- src/qemu/qemu_capabilities.h | 1 - src/qemu/qemu_command.c | 6 ----- src/qemu/qemu_validate.c | 26 ++++++------------- .../caps_5.2.0_aarch64.xml | 1 - .../caps_6.0.0_aarch64.xml | 1 - .../caps_6.2.0_aarch64.xml | 1 - .../caps_7.0.0_aarch64+hvf.xml | 1 - .../caps_7.0.0_aarch64.xml | 1 - tests/qemuxml2argvdata/aarch64-gic-v3.args | 2 +- tests/qemuxml2argvdata/aarch64-gic-v3.xml | 1 - .../aarch64-gic-v3.aarch64-latest.xml | 1 - 16 files changed, 10 insertions(+), 53 deletions(-) -- 2.40.1

The QEMU interface is still in a state of flux, and KVM support has been pulled shortly after having been merged. Let's not commit to a stable interface in libvirt just yet. Reverts: b10bc8f7ab6f9986ccc54ba04fc5b3bad7576be6 Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/qemu/qemu_command.c | 6 ------ tests/qemuxml2argvdata/aarch64-gic-v3.args | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 9b993c3aad..2a6d9408f6 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6797,12 +6797,6 @@ qemuAppendDomainFeaturesMachineParam(virBuffer *buf, virBufferAsprintf(buf, ",cap-ibs=%s", str); } - if (def->features[VIR_DOMAIN_FEATURE_MTE] != VIR_TRISTATE_SWITCH_ABSENT) { - const char *str; - str = virTristateSwitchTypeToString(def->features[VIR_DOMAIN_FEATURE_MTE]); - virBufferAsprintf(buf, ",mte=%s", str); - } - return 0; } diff --git a/tests/qemuxml2argvdata/aarch64-gic-v3.args b/tests/qemuxml2argvdata/aarch64-gic-v3.args index 0244951d87..0d7a1c259a 100644 --- a/tests/qemuxml2argvdata/aarch64-gic-v3.args +++ b/tests/qemuxml2argvdata/aarch64-gic-v3.args @@ -10,7 +10,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-aarch64test/.config \ -name guest=aarch64test,debug-threads=on \ -S \ -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-aarch64test/master-key.aes"}' \ --machine virt,usb=off,gic-version=3,mte=on,dump-guest-core=off,memory-backend=mach-virt.ram \ +-machine virt,usb=off,gic-version=3,dump-guest-core=off,memory-backend=mach-virt.ram \ -accel kvm \ -cpu host \ -m 1024 \ -- 2.40.1

The QEMU interface is still in a state of flux, and KVM support has been pulled shortly after having been merged. Let's not commit to a stable interface in libvirt just yet. Reverts: c6c9b5d251de215ed378aa0bc31daa2e1170409e Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/qemu/qemu_validate.c | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index da76556854..99c7775e9b 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -124,23 +124,14 @@ qemuValidateDomainDefFeatures(const virDomainDef *def, case VIR_DOMAIN_FEATURE_GIC: case VIR_DOMAIN_FEATURE_MTE: - if (def->features[i] != VIR_TRISTATE_SWITCH_ABSENT) { - if (!qemuDomainIsARMVirt(def)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("The '%1$s' feature is not supported for architecture '%2$s' or machine type '%3$s'"), - featureName, - virArchToString(def->os.arch), - def->os.machine); - return -1; - } - - if (i == VIR_DOMAIN_FEATURE_MTE && - !virQEMUCapsGet(qemuCaps, QEMU_CAPS_MACHINE_VIRT_MTE)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("The '%1$s' feature is not supported with this QEMU binary"), - featureName); - return -1; - } + if (def->features[i] == VIR_TRISTATE_SWITCH_ON && + !qemuDomainIsARMVirt(def)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("The '%1$s' feature is not supported for architecture '%2$s' or machine type '%3$s'"), + featureName, + virArchToString(def->os.arch), + def->os.machine); + return -1; } break; -- 2.40.1

The QEMU interface is still in a state of flux, and KVM support has been pulled shortly after having been merged. Let's not commit to a stable interface in libvirt just yet. Reverts: 1347a19f75a23b4d92e6a7b549fcde52b23f0258 Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/qemu/qemu_capabilities.c | 2 -- src/qemu/qemu_capabilities.h | 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+hvf.xml | 1 - tests/qemucapabilitiesdata/caps_7.0.0_aarch64.xml | 1 - 7 files changed, 8 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index a88c4070ab..cf85d42198 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -693,7 +693,6 @@ VIR_ENUM_IMPL(virQEMUCaps, "virtio-gpu.blob", /* QEMU_CAPS_VIRTIO_GPU_BLOB */ "rbd-encryption-layering", /* QEMU_CAPS_RBD_ENCRYPTION_LAYERING */ "rbd-encryption-luks-any", /* QEMU_CAPS_RBD_ENCRYPTION_LUKS_ANY */ - "machine.virt.mte", /* QEMU_CAPS_MACHINE_VIRT_MTE */ ); @@ -1721,7 +1720,6 @@ static struct virQEMUCapsStringFlags virQEMUCapsMachinePropsPSeries[] = { static struct virQEMUCapsStringFlags virQEMUCapsMachinePropsVirt[] = { { "iommu", QEMU_CAPS_MACHINE_VIRT_IOMMU }, - { "mte", QEMU_CAPS_MACHINE_VIRT_MTE }, }; static struct virQEMUCapsStringFlags virQEMUCapsMachinePropsGeneric[] = { diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index ffece17877..3b55aed07a 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -672,7 +672,6 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ QEMU_CAPS_VIRTIO_GPU_BLOB, /* -device virtio-gpu-*.blob= */ QEMU_CAPS_RBD_ENCRYPTION_LAYERING, /* layered encryption support for Ceph RBD */ QEMU_CAPS_RBD_ENCRYPTION_LUKS_ANY, /* luks-any (LUKS and LUKS2) encryption format for Ceph RBD */ - QEMU_CAPS_MACHINE_VIRT_MTE, /* -machine virt,mte=* for ARM guests */ QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_5.2.0_aarch64.xml b/tests/qemucapabilitiesdata/caps_5.2.0_aarch64.xml index 4843b32a45..b1c5c21abb 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0_aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0_aarch64.xml @@ -130,7 +130,6 @@ <flag name='virtio-net.rss'/> <flag name='usb-host.guest-resets-all'/> <flag name='virtio-crypto'/> - <flag name='machine.virt.mte'/> <version>5002000</version> <microcodeVersion>61700243</microcodeVersion> <package>v5.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_6.0.0_aarch64.xml b/tests/qemucapabilitiesdata/caps_6.0.0_aarch64.xml index 78e297c7f4..6faf407a97 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0_aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0_aarch64.xml @@ -140,7 +140,6 @@ <flag name='migration.blocked-reasons'/> <flag name='virtio-crypto'/> <flag name='pvpanic-pci'/> - <flag name='machine.virt.mte'/> <version>6000000</version> <microcodeVersion>61700242</microcodeVersion> <package>v6.0.0</package> diff --git a/tests/qemucapabilitiesdata/caps_6.2.0_aarch64.xml b/tests/qemucapabilitiesdata/caps_6.2.0_aarch64.xml index f37b84d399..e312801b89 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0_aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0_aarch64.xml @@ -153,7 +153,6 @@ <flag name='virtio-crypto'/> <flag name='pvpanic-pci'/> <flag name='virtio-gpu.blob'/> - <flag name='machine.virt.mte'/> <version>6001050</version> <microcodeVersion>61700244</microcodeVersion> <package></package> diff --git a/tests/qemucapabilitiesdata/caps_7.0.0_aarch64+hvf.xml b/tests/qemucapabilitiesdata/caps_7.0.0_aarch64+hvf.xml index d0f1815e85..3517e81d15 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0_aarch64+hvf.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0_aarch64+hvf.xml @@ -161,7 +161,6 @@ <flag name='virtio-crypto'/> <flag name='pvpanic-pci'/> <flag name='virtio-gpu.blob'/> - <flag name='machine.virt.mte'/> <version>6002092</version> <microcodeVersion>61700243</microcodeVersion> <package>v7.0.0-rc2</package> diff --git a/tests/qemucapabilitiesdata/caps_7.0.0_aarch64.xml b/tests/qemucapabilitiesdata/caps_7.0.0_aarch64.xml index 5ca98e19be..58db75d1d7 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0_aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0_aarch64.xml @@ -161,7 +161,6 @@ <flag name='virtio-crypto'/> <flag name='pvpanic-pci'/> <flag name='virtio-gpu.blob'/> - <flag name='machine.virt.mte'/> <version>6002092</version> <microcodeVersion>61700243</microcodeVersion> <package>v7.0.0-rc2</package> -- 2.40.1

The QEMU interface is still in a state of flux, and KVM support has been pulled shortly after having been merged. Let's not commit to a stable interface in libvirt just yet. Reverts: 720e8f13ff71377580cd37b118cee8a1f982d1d8 Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- docs/formatdomain.rst | 7 ------- src/conf/domain_conf.c | 6 +----- src/conf/domain_conf.h | 1 - src/conf/schemas/domaincommon.rng | 5 ----- src/qemu/qemu_validate.c | 1 - tests/qemuxml2argvdata/aarch64-gic-v3.xml | 1 - tests/qemuxml2xmloutdata/aarch64-gic-v3.aarch64-latest.xml | 1 - 7 files changed, 1 insertion(+), 21 deletions(-) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index b46eefb0f6..dd28a565e1 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -2000,7 +2000,6 @@ Hypervisors may allow certain CPU / machine features to be toggled on/off. <tcg> <tb-cache unit='MiB'>128</tb-cache> </tcg> - <mte state='on'/> </features> ... @@ -2231,12 +2230,6 @@ are: tb-cache The size of translation block cache size an integer (a multiple of MiB) :since:`8.0.0` =========== ============================================== =================================================== ============== -``mte`` - Configure Memory Tagging Extensions for ARM guests. Possible values for the - ``state`` attribute are ``on`` and ``off``. If the attribute is not - defined, the hypervisor default will be used. :since:`Since 9.4.0` (QEMU/KVM - only) - Time keeping ------------ diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 047a4c97bf..6a864a8db9 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -181,7 +181,6 @@ VIR_ENUM_IMPL(virDomainFeature, "sbbc", "ibs", "tcg", - "mte", ); VIR_ENUM_IMPL(virDomainCapabilitiesPolicy, @@ -16646,8 +16645,7 @@ virDomainFeaturesDefParse(virDomainDef *def, case VIR_DOMAIN_FEATURE_HTM: case VIR_DOMAIN_FEATURE_NESTED_HV: - case VIR_DOMAIN_FEATURE_CCF_ASSIST: - case VIR_DOMAIN_FEATURE_MTE: { + case VIR_DOMAIN_FEATURE_CCF_ASSIST: { virTristateSwitch state; if (virXMLPropTristateSwitch(nodes[i], "state", @@ -20488,7 +20486,6 @@ virDomainDefFeaturesCheckABIStability(virDomainDef *src, case VIR_DOMAIN_FEATURE_HTM: case VIR_DOMAIN_FEATURE_NESTED_HV: case VIR_DOMAIN_FEATURE_CCF_ASSIST: - case VIR_DOMAIN_FEATURE_MTE: if (src->features[i] != dst->features[i]) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("State of feature '%1$s' differs: source: '%2$s', destination: '%3$s'"), @@ -27008,7 +27005,6 @@ virDomainDefFormatFeatures(virBuffer *buf, case VIR_DOMAIN_FEATURE_HTM: case VIR_DOMAIN_FEATURE_NESTED_HV: case VIR_DOMAIN_FEATURE_CCF_ASSIST: - case VIR_DOMAIN_FEATURE_MTE: switch ((virTristateSwitch) def->features[i]) { case VIR_TRISTATE_SWITCH_LAST: case VIR_TRISTATE_SWITCH_ABSENT: diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 3f8d6e81c0..c1cb2ed69d 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2169,7 +2169,6 @@ typedef enum { VIR_DOMAIN_FEATURE_SBBC, VIR_DOMAIN_FEATURE_IBS, VIR_DOMAIN_FEATURE_TCG, - VIR_DOMAIN_FEATURE_MTE, VIR_DOMAIN_FEATURE_LAST } virDomainFeature; diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng index 37e350ac2c..f8c7b6a648 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -6653,11 +6653,6 @@ <optional> <ref name="tcgfeatures"/> </optional> - <optional> - <element name="mte"> - <ref name="featurestate"/> - </element> - </optional> </interleave> </element> </optional> diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 99c7775e9b..da4b9a3b35 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -123,7 +123,6 @@ qemuValidateDomainDefFeatures(const virDomainDef *def, break; case VIR_DOMAIN_FEATURE_GIC: - case VIR_DOMAIN_FEATURE_MTE: if (def->features[i] == VIR_TRISTATE_SWITCH_ON && !qemuDomainIsARMVirt(def)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, diff --git a/tests/qemuxml2argvdata/aarch64-gic-v3.xml b/tests/qemuxml2argvdata/aarch64-gic-v3.xml index b9317284b0..247d6025f7 100644 --- a/tests/qemuxml2argvdata/aarch64-gic-v3.xml +++ b/tests/qemuxml2argvdata/aarch64-gic-v3.xml @@ -10,7 +10,6 @@ </os> <features> <gic version='3'/> - <mte state='on'/> </features> <cpu mode='host-passthrough' check='none'/> <clock offset='utc'/> diff --git a/tests/qemuxml2xmloutdata/aarch64-gic-v3.aarch64-latest.xml b/tests/qemuxml2xmloutdata/aarch64-gic-v3.aarch64-latest.xml index 1a74903aaa..5b2fb7df75 100644 --- a/tests/qemuxml2xmloutdata/aarch64-gic-v3.aarch64-latest.xml +++ b/tests/qemuxml2xmloutdata/aarch64-gic-v3.aarch64-latest.xml @@ -10,7 +10,6 @@ </os> <features> <gic version='3'/> - <mte state='on'/> </features> <cpu mode='host-passthrough' check='none'/> <clock offset='utc'/> -- 2.40.1

On a Monday in 2023, Andrea Bolognani wrote:
See the subthread starting at [1] for the rationale. The QEMU commit that (temporarily) reverted KVM support is at [2].
[1] https://listman.redhat.com/archives/libvir-list/2023-May/239911.html [2] https://gitlab.com/qemu-project/qemu/-/commit/d009607d08d22f91ca399b72828c66...
Andrea Bolognani (4): Revert "qemu: Generate command line for MTE feature" Revert "qemu: Validate MTE feature" Revert "qemu:: Introduce QEMU_CAPS_MACHINE_VIRT_MTE capability" Revert "conf: Introduce MTE domain feature"
docs/formatdomain.rst | 7 ----- src/conf/domain_conf.c | 6 +---- src/conf/domain_conf.h | 1 - src/conf/schemas/domaincommon.rng | 5 ---- src/qemu/qemu_capabilities.c | 2 -- src/qemu/qemu_capabilities.h | 1 - src/qemu/qemu_command.c | 6 ----- src/qemu/qemu_validate.c | 26 ++++++------------- .../caps_5.2.0_aarch64.xml | 1 - .../caps_6.0.0_aarch64.xml | 1 - .../caps_6.2.0_aarch64.xml | 1 - .../caps_7.0.0_aarch64+hvf.xml | 1 - .../caps_7.0.0_aarch64.xml | 1 - tests/qemuxml2argvdata/aarch64-gic-v3.args | 2 +- tests/qemuxml2argvdata/aarch64-gic-v3.xml | 1 - .../aarch64-gic-v3.aarch64-latest.xml | 1 - 16 files changed, 10 insertions(+), 53 deletions(-)
Reviewed-by:: Ján Tomko <jtomko@redhat.com> Jano

On Mon, May 22 2023, Andrea Bolognani <abologna@redhat.com> wrote:
See the subthread starting at [1] for the rationale. The QEMU commit that (temporarily) reverted KVM support is at [2].
[1] https://listman.redhat.com/archives/libvir-list/2023-May/239911.html [2] https://gitlab.com/qemu-project/qemu/-/commit/d009607d08d22f91ca399b72828c66...
Andrea Bolognani (4): Revert "qemu: Generate command line for MTE feature" Revert "qemu: Validate MTE feature" Revert "qemu:: Introduce QEMU_CAPS_MACHINE_VIRT_MTE capability" Revert "conf: Introduce MTE domain feature"
docs/formatdomain.rst | 7 ----- src/conf/domain_conf.c | 6 +---- src/conf/domain_conf.h | 1 - src/conf/schemas/domaincommon.rng | 5 ---- src/qemu/qemu_capabilities.c | 2 -- src/qemu/qemu_capabilities.h | 1 - src/qemu/qemu_command.c | 6 ----- src/qemu/qemu_validate.c | 26 ++++++------------- .../caps_5.2.0_aarch64.xml | 1 - .../caps_6.0.0_aarch64.xml | 1 - .../caps_6.2.0_aarch64.xml | 1 - .../caps_7.0.0_aarch64+hvf.xml | 1 - .../caps_7.0.0_aarch64.xml | 1 - tests/qemuxml2argvdata/aarch64-gic-v3.args | 2 +- tests/qemuxml2argvdata/aarch64-gic-v3.xml | 1 - .../aarch64-gic-v3.aarch64-latest.xml | 1 - 16 files changed, 10 insertions(+), 53 deletions(-)
FWIW, Reviewed-by: Cornelia Huck <cohuck@redhat.com>
participants (3)
-
Andrea Bolognani
-
Cornelia Huck
-
Ján Tomko