Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
src/qemu/qemu_capabilities.c | 16 ++++++++++++++++
src/qemu/qemu_capabilities.h | 3 +++
src/qemu/qemu_domain.c | 20 ++++++++++++++++++++
3 files changed, 39 insertions(+)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index f6d7a222c4..b6d4c09e7e 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -2454,6 +2454,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,
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
index a6270edb0e..19e2cd1fff 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -689,6 +689,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);
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index ed5fd6aa0d..f00e8d9384 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -6243,6 +6243,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,
@@ -6307,6 +6325,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);
--
2.29.2