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@xxxxxxxxxxxxxxxxxx> CC: Stefan Berger <stefanb@xxxxxxxxxxxxx> Signed-off-by: Daniel Henrique Barboza <danielhb413@xxxxxxxxx> --- .../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