The swtpm(tpm emulator) advertises the TPM version since v0.7.0. Libvirt reports this information in domcaps since v8.6.0. By commit eb58c09f, virt-install adds an emulated TPM device if UEFI is present. If the tpm emulator isn't capable of 2.0, We should use tpm 1.2 instead of the default(2.0), Otherwise it fails with this error message: libvirt.libvirtError: unsupported configuration: TPM version '2.0' is not supported Signed-off-by: Lin Ma <lma@xxxxxxx> --- tests/data/cli/compare/virt-install-amd-sev.xml | 4 ++-- virtinst/guest.py | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/data/cli/compare/virt-install-amd-sev.xml b/tests/data/cli/compare/virt-install-amd-sev.xml index 68b236dd..3d9bcd53 100644 --- a/tests/data/cli/compare/virt-install-amd-sev.xml +++ b/tests/data/cli/compare/virt-install-amd-sev.xml @@ -66,8 +66,8 @@ <target type="virtio" name="com.redhat.spice.0"/> </channel> <input type="tablet" bus="usb"/> - <tpm model="tpm-crb"> - <backend type="emulator"/> + <tpm> + <backend type="emulator" version="1.2"/> </tpm> <graphics type="spice" port="-1" tlsPort="-1" autoport="yes"> <image compression="off"/> diff --git a/virtinst/guest.py b/virtinst/guest.py index 123abfb2..2408d5d4 100644 --- a/virtinst/guest.py +++ b/virtinst/guest.py @@ -1059,6 +1059,8 @@ class Guest(XMLBuilder): log.debug("Adding default TPM") dev = DeviceTpm(self.conn) dev.type = DeviceTpm.TYPE_EMULATOR + if not self.lookup_domcaps().supports_tpm_v2(): + dev.version = DeviceTpm.VERSION_1_2 self.add_device(dev) def _add_default_memballoon(self): -- 2.41.0