qemu: Move TPMs validation out of PostParse

After previous cleanup, the qemuDomainDefTPMsPostParse() function
does nothing more than validates TPM devices. Therefore, it
should live in qemu_validate.c instead of qemu_domain.c. Move it
there and rename to reflect the fact that the function is doing
validation instead of PostParsing.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
Michal Privoznik 2022-07-18 09:32:19 +02:00
parent 2b3e8ddd9d
commit 99e2b670fa
2 changed files with 34 additions and 34 deletions

View File

@ -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;
}

View File

@ -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: