]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Validate MTE feature
authorMichal Privoznik <mprivozn@redhat.com>
Mon, 15 May 2023 12:06:59 +0000 (14:06 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Tue, 16 May 2023 15:43:03 +0000 (17:43 +0200)
The MTE feature is not supported by all QEMUs, only those with
QEMU_CAPS_MACHINE_VIRT_MTE capability.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
src/qemu/qemu_validate.c

index 99c7775e9bf11c247b6f341e7799fabfc8a132a4..da765568544d55a41a36b32681ae6837ab96f71f 100644 (file)
@@ -124,14 +124,23 @@ qemuValidateDomainDefFeatures(const virDomainDef *def,
 
         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,
-                               _("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 (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;
+                }
             }
             break;