From: Stefan Berger <stefanb(a)linux.ibm.com>
The firmware (SLOF) on QEMU for ppc64 does not support TPM 1.2, so
prevent the choice of TPM 1.2 when the SPAPR device model is chosen
and use a default of '2.0' (TPM 2) for the backend.
Signed-off-by: Stefan Berger <stefanb(a)linux.ibm.com>
---
src/qemu/qemu_domain.c | 8 ++++++--
src/qemu/qemu_validate.c | 6 ++++++
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index f916d840e2..b0f5e17613 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -4351,8 +4351,12 @@ qemuDomainDefTPMsPostParse(virDomainDefPtr def)
virDomainTPMDefPtr tpm = def->tpms[i];
/* TPM 1.2 and 2 are not compatible, so we choose a specific version here */
- if (tpm->version == VIR_DOMAIN_TPM_VERSION_DEFAULT)
- tpm->version = VIR_DOMAIN_TPM_VERSION_1_2;
+ if (tpm->version == VIR_DOMAIN_TPM_VERSION_DEFAULT) {
+ if (tpm->model == VIR_DOMAIN_TPM_MODEL_SPAPR)
+ tpm->version = VIR_DOMAIN_TPM_VERSION_2_0;
+ else
+ tpm->version = VIR_DOMAIN_TPM_VERSION_1_2;
+ }
if (tpm->model == VIR_DOMAIN_TPM_MODEL_SPAPR_PROXY) {
if (proxyTPM) {
diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
index d130b52bf2..488f258d00 100644
--- a/src/qemu/qemu_validate.c
+++ b/src/qemu/qemu_validate.c
@@ -3654,6 +3654,12 @@ qemuValidateDomainDeviceDefTPM(virDomainTPMDef *tpm,
virDomainTPMModelTypeToString(tpm->model));
return -1;
}
+ /* TPM 1.2 + SPAPR do not work with any 'type' (backend) */
+ if (tpm->model == VIR_DOMAIN_TPM_MODEL_SPAPR) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("TPM 1.2 is not supported with the SPAPR device
model"));
+ return -1;
+ }
break;
case VIR_DOMAIN_TPM_VERSION_2_0:
case VIR_DOMAIN_TPM_VERSION_DEFAULT:
--
2.17.1