[PATCH v2 7/7] tpm.py: make MODEL_SPAPR the default when running in ppc64

Daniel Henrique Barboza danielhb413 at gmail.com
Wed Jun 3 13:14:36 UTC 2020


Users are fond of using "--tpm /dev/tpm0" to create a TPM device
for their VMs. ppc64 users, however, are experiencing errors because
the default TPM model is 'tpm-tis', which does not work in ppc64, and
they need to specify 'model=tpm-spapr' to work around that.

This patch makes the default TPM model change to 'tpm-spapr' when
running virt-install on a ppc64 host. A new test was added in test_cli.py
to test this new condition. This also keeps the 100% coverage of
the tpm.py file.

CC: Satheesh Rajendran <sathnaga at linux.vnet.ibm.com>
CC: Stefan Berger <stefanb at linux.ibm.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
---
 .../virt-install-ppc64-pseries-tpm.xml        | 37 +++++++++++++++++++
 tests/test_cli.py                             |  1 +
 virtinst/devices/tpm.py                       |  3 ++
 3 files changed, 41 insertions(+)
 create mode 100644 tests/data/cli/compare/virt-install-ppc64-pseries-tpm.xml

diff --git a/tests/data/cli/compare/virt-install-ppc64-pseries-tpm.xml b/tests/data/cli/compare/virt-install-ppc64-pseries-tpm.xml
new file mode 100644
index 00000000..bf82d1d7
--- /dev/null
+++ b/tests/data/cli/compare/virt-install-ppc64-pseries-tpm.xml
@@ -0,0 +1,37 @@
+<domain type="qemu">
+  <name>vm-ppc64</name>
+  <uuid>00000000-1111-2222-3333-444444444444</uuid>
+  <memory>65536</memory>
+  <currentMemory>65536</currentMemory>
+  <vcpu>1</vcpu>
+  <os>
+    <type arch="ppc64" machine="pseries">hvm</type>
+    <boot dev="network"/>
+  </os>
+  <clock offset="utc"/>
+  <devices>
+    <emulator>/usr/bin/qemu-system-ppc64</emulator>
+    <disk type="file" device="disk">
+      <driver name="qemu" type="qcow2"/>
+      <source file="/dev/default-pool/testvol1.img"/>
+      <target dev="vda" bus="virtio"/>
+    </disk>
+    <controller type="usb" model="qemu-xhci" ports="15"/>
+    <console type="pty"/>
+    <channel type="unix">
+      <source mode="bind"/>
+      <target type="virtio" name="org.qemu.guest_agent.0"/>
+    </channel>
+    <input type="tablet" bus="usb"/>
+    <input type="keyboard" bus="usb"/>
+    <tpm model="tpm-spapr">
+      <backend type="passthrough">
+        <device path="/dev/tpm0"/>
+      </backend>
+    </tpm>
+    <graphics type="vnc" port="-1"/>
+    <video>
+      <model type="vga"/>
+    </video>
+  </devices>
+</domain>
diff --git a/tests/test_cli.py b/tests/test_cli.py
index 740e390c..90b5ba35 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -963,6 +963,7 @@ c.add_compare("--os-variant fedora20 --nodisks --boot network --graphics default
 c.add_compare("--arch ppc64 --machine pseries --boot network --disk %(EXISTIMG1)s --disk device=cdrom --os-variant fedora20 --network none", "ppc64-pseries-f20")
 c.add_compare("--arch ppc64 --boot network --disk %(EXISTIMG1)s --os-variant fedora20 --network none", "ppc64-machdefault-f20")
 c.add_compare("--connect %(URI-KVM-PPC64LE)s --import --disk %(EXISTIMG1)s --os-variant fedora20 --panic default", "ppc64le-kvm-import")
+c.add_compare("--arch ppc64 --machine pseries --boot network --disk %(EXISTIMG1)s --graphics vnc --network none --tpm /dev/tpm0", "ppc64-pseries-tpm")  # default TPM for ppc64
 
 # s390x tests
 c.add_compare("--arch s390x --machine s390-ccw-virtio --connect %(URI-KVM-S390X)s --boot kernel=/kernel.img,initrd=/initrd.img --disk %(EXISTIMG1)s --disk %(EXISTIMG3)s,device=cdrom --os-variant fedora21", "s390x-cdrom", prerun_check=has_old_osinfo)
diff --git a/virtinst/devices/tpm.py b/virtinst/devices/tpm.py
index 82b64479..03907e2b 100644
--- a/virtinst/devices/tpm.py
+++ b/virtinst/devices/tpm.py
@@ -41,3 +41,6 @@ class DeviceTpm(Device):
             self.type = self.TYPE_PASSTHROUGH
         if not self.model:
             self.model = self.MODEL_TIS
+
+            if guest.os.is_ppc64():
+                self.model = self.MODEL_SPAPR
-- 
2.26.2




More information about the virt-tools-list mailing list