On 6/18/22 20:32, Cole Robinson wrote:
Replace tpm->type and tpm->model qemuCaps validation with the
similar logic in domcaps.
Signed-off-by: Cole Robinson <crobinso(a)redhat.com>
---
src/qemu/qemu_validate.c | 71 ++++++++++------------------------------
1 file changed, 17 insertions(+), 54 deletions(-)
diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
index db47fcaa9c..39210ba65b 100644
--- a/src/qemu/qemu_validate.c
+++ b/src/qemu/qemu_validate.c
@@ -4750,7 +4750,7 @@ qemuValidateDomainDeviceDefTPM(virDomainTPMDef *tpm,
const virDomainDef *def,
virQEMUCaps *qemuCaps)
{
- virQEMUCapsFlags flag;
+ virDomainCapsDeviceTPM tpmCaps = { 0 };
switch (tpm->version) {
case VIR_DOMAIN_TPM_VERSION_1_2:
@@ -4781,57 +4781,28 @@ qemuValidateDomainDeviceDefTPM(virDomainTPMDef *tpm,
break;
}
- switch (tpm->type) {
- case VIR_DOMAIN_TPM_TYPE_PASSTHROUGH:
- if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_TPM_PASSTHROUGH))
- goto no_support;
- break;
-
- case VIR_DOMAIN_TPM_TYPE_EMULATOR:
- if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_TPM_EMULATOR))
- goto no_support;
+ virQEMUCapsFillDomainDeviceTPMCaps(qemuCaps, &tpmCaps);
- break;
- case VIR_DOMAIN_TPM_TYPE_LAST:
- break;
+ if (!VIR_DOMAIN_CAPS_ENUM_IS_SET(tpmCaps.backendModel, tpm->type)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("The QEMU executable %s does not support TPM "
+ "backend type %s"),
+ def->emulator,
+ virDomainTPMBackendTypeToString(tpm->type));
Whoa, very nice idea! And looking around the file I can see it used
already. How could this slipped by me? I mean, the more I think about it
the more possibilities for code deduplication I see. And on the flip
side - we would be motivated to keep domcaps on the bleeding edge.
Michal