}
+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,
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);
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,
VIR_DOMAIN_TAINT_CUSTOM_HYPERVISOR_FEATURE, logCtxt);
}
+ qemuDomainObjCheckMachineTaint(driver, obj, logCtxt);
+
if (obj->def->cpu)
qemuDomainObjCheckCPUTaint(driver, obj, logCtxt, incomingMigration);