diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 873b8b309c..a53c25f36e 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -4583,37 +4583,6 @@ qemuDomainDefNumaCPUsPostParse(virDomainDef *def, } -static int -qemuDomainDefTPMsPostParse(virDomainDef *def) -{ - virDomainTPMDef *proxyTPM = NULL; - virDomainTPMDef *regularTPM = NULL; - size_t i; - - for (i = 0; i < def->ntpms; i++) { - virDomainTPMDef *tpm = def->tpms[i]; - - if (tpm->model == VIR_DOMAIN_TPM_MODEL_SPAPR_PROXY) { - if (proxyTPM) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("only a single TPM Proxy device is supported")); - return -1; - } else { - proxyTPM = tpm; - } - } else if (regularTPM) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("only a single TPM non-proxy device is supported")); - return -1; - } else { - regularTPM = tpm; - } - } - - return 0; -} - - static int qemuDomainDefPostParseBasic(virDomainDef *def, void *opaque G_GNUC_UNUSED) @@ -4710,9 +4679,6 @@ qemuDomainDefPostParse(virDomainDef *def, if (qemuDomainDefNumaCPUsPostParse(def, qemuCaps) < 0) return -1; - if (qemuDomainDefTPMsPostParse(def) < 0) - return -1; - return 0; } diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 2bee0a4065..48bd40db9f 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -1113,6 +1113,37 @@ qemuValidateDomainDefPanic(const virDomainDef *def, } +static int +qemuValidateDomainDefTPMs(const virDomainDef *def) +{ + const virDomainTPMDef *proxyTPM = NULL; + const virDomainTPMDef *regularTPM = NULL; + size_t i; + + for (i = 0; i < def->ntpms; i++) { + virDomainTPMDef *tpm = def->tpms[i]; + + if (tpm->model == VIR_DOMAIN_TPM_MODEL_SPAPR_PROXY) { + if (proxyTPM) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("only a single TPM Proxy device is supported")); + return -1; + } + proxyTPM = tpm; + } else { + if (regularTPM) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("only a single TPM non-proxy device is supported")); + return -1; + } + regularTPM = tpm; + } + } + + return 0; +} + + int qemuValidateLifecycleAction(virDomainLifecycleAction onPoweroff, virDomainLifecycleAction onReboot, @@ -1310,6 +1341,9 @@ qemuValidateDomainDef(const virDomainDef *def, if (qemuValidateDomainDefPanic(def, qemuCaps) < 0) return -1; + if (qemuValidateDomainDefTPMs(def) < 0) + return -1; + if (def->sec) { switch ((virDomainLaunchSecurity) def->sec->sectype) { case VIR_DOMAIN_LAUNCH_SECURITY_SEV: