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 <l...@suse.de>
---
 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

Reply via email to