]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: taint the VM if it is using a deprecated machine type
authorDaniel P. Berrangé <berrange@redhat.com>
Fri, 22 Jan 2021 11:48:23 +0000 (11:48 +0000)
committerDaniel P. Berrangé <berrange@redhat.com>
Wed, 3 Feb 2021 17:32:27 +0000 (17:32 +0000)
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
src/qemu/qemu_capabilities.c
src/qemu/qemu_capabilities.h
src/qemu/qemu_domain.c

index 54c58962164870d22d643112fbc3d7abe1502f58..ce00edcb1c961f6f9cb65f50f8aafc90874e7d78 100644 (file)
@@ -2462,6 +2462,22 @@ virQEMUCapsIsCPUDeprecated(virQEMUCapsPtr qemuCaps,
 }
 
 
+bool
+virQEMUCapsIsMachineDeprecated(virQEMUCapsPtr qemuCaps,
+                               virDomainVirtType type,
+                               const char *machine)
+{
+    virQEMUCapsAccelPtr accel = virQEMUCapsGetAccel(qemuCaps, type);
+    size_t i;
+
+    for (i = 0; i < accel->nmachineTypes; i++) {
+        if (STREQ_NULLABLE(accel->machineTypes[i].name, machine))
+            return accel->machineTypes[i].deprecated;
+    }
+    return false;
+}
+
+
 bool
 virQEMUCapsGetMachineNumaMemSupported(virQEMUCapsPtr qemuCaps,
                                       virDomainVirtType virtType,
index 8b7eb0b06c14d8cc26a59102ea28e18cc4399f8b..3e26365f128c0192762cba7390678b6b25e435da 100644 (file)
@@ -690,6 +690,9 @@ const char *virQEMUCapsGetMachineDefaultCPU(virQEMUCapsPtr qemuCaps,
 bool virQEMUCapsIsCPUDeprecated(virQEMUCapsPtr qemuCaps,
                                 virDomainVirtType type,
                                 const char *model);
+bool virQEMUCapsIsMachineDeprecated(virQEMUCapsPtr qemuCaps,
+                                    virDomainVirtType type,
+                                    const char *machine);
 bool virQEMUCapsGetMachineNumaMemSupported(virQEMUCapsPtr qemuCaps,
                                            virDomainVirtType virtType,
                                            const char *name);
index 8a1785c2c39fa1a372b88a9a2489756520f1ed54..9ae1dd2e2631044a18b23d566a3a36e1d5ab01dd 100644 (file)
@@ -6274,6 +6274,24 @@ void qemuDomainObjTaintMsg(virQEMUDriverPtr driver,
     virErrorRestore(&orig_err);
 }
 
+static void
+qemuDomainObjCheckMachineTaint(virQEMUDriverPtr driver,
+                               virDomainObjPtr obj,
+                               qemuDomainLogContextPtr logCtxt)
+{
+    qemuDomainObjPrivatePtr priv = obj->privateData;
+    virQEMUCapsPtr qemuCaps = priv->qemuCaps;
+
+    if (virQEMUCapsIsMachineDeprecated(qemuCaps,
+                                       obj->def->virtType,
+                                       obj->def->os.machine)) {
+        qemuDomainObjTaintMsg(driver, obj, VIR_DOMAIN_TAINT_DEPRECATED_CONFIG, logCtxt,
+                              _("machine type '%s'"),
+                              obj->def->os.machine);
+    }
+}
+
+
 static void
 qemuDomainObjCheckCPUTaint(virQEMUDriverPtr driver,
                            virDomainObjPtr obj,
@@ -6338,6 +6356,8 @@ void qemuDomainObjCheckTaint(virQEMUDriverPtr driver,
                            VIR_DOMAIN_TAINT_CUSTOM_HYPERVISOR_FEATURE, logCtxt);
     }
 
+    qemuDomainObjCheckMachineTaint(driver, obj, logCtxt);
+
     if (obj->def->cpu)
         qemuDomainObjCheckCPUTaint(driver, obj, logCtxt, incomingMigration);