On Tue, Jan 21, 2020 at 10:29:29AM -0500, Stefan Berger wrote: > > The following series of patches adds vTPM emulator support for the > ppc64 platform (pSeries). > > It can be tested as follows with swtpm/libtpms: > > mkdir /tmp/mytpm1 > swtpm socket --tpmstate dir=/tmp/mytpm1 \ > --ctrl type=unixio,path=/tmp/mytpm1/swtpm-sock \ > --log level=20 > > If TPM 2 is desired, add --tpm2 as parameter to the above. > > In another terminal start QEMU: > > sudo ./ppc64-softmmu/qemu-system-ppc64 -display sdl \ > -machine pseries,accel=kvm \ > -m 1024 -bios slof.bin -boot menu=on \ > -nodefaults -device VGA -device pci-ohci -device usb-kbd \ > -chardev socket,id=chrtpm,path=/tmp/mytpm1/swtpm-sock \ > -tpmdev emulator,id=tpm0,chardev=chrtpm \ > -device tpm-spapr,tpmdev=tpm0 \ > -device spapr-vscsi,id=scsi0,reg=0x00002000 \ > -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x3,drive=drive-virtio-disk0,id=virtio-disk0 \ > -drive file=test.img,format=raw,if=none,id=drive-virtio-disk0 > > Links: > - libtpms: https://github.com/stefanberger/libtpms/wiki > - swtpm: https://github.com/stefanberger/swtpm/wiki Applied to ppc-for-5.0, thanks. > > Changes: > v8->v9: > - Allocating buffer now so we can use VMSTATE_VBUFFER_UINT32 for the regular > buffer (no more suspend buffer) > > v7->v8: > - Folded documentation patch into 3rd patch > - Added Marc-André's patch to end of series > > v6->v7: > - Implemented get_dt_compatible() and using it > - Moved tpm_this_show_buffer to tpm_util.c > > v5->v6: > - adjusted names of structures and simplified > - only transmitting min. necessary bytes to pass to VM after resume > - addressed other issues pointed out by D. Gibson > > v4->v5: > - use runstate_check(RUN_STATE_FINISH_MIGRATE) to check whether devices > are suspending; ditch 3 patches in this series that tried to do similar > > v3->v4: > - addressed comments to v3 > - reworked suspend/resume support that requires extensions to backends > > v2->v3: > - patch 1: a TPM 2 is identified by IBM,vtpm20 in the compatible node > - patch 1: convert to tracing to display Tx and Rx buffers > - added documentation patch > - added patch to enable TPM device as part of pSeries > > v1->v2: > - followed Cedric Le Goater's suggestions to patch 1 > - send appropriate CRQ error responses if DMA read or write fails > - renamed tpm_spapr_got_payload to tpm_spapr_process_cmd and > pass endianess-adjusted data pointer from CRQ to it > > Regards, > Stefan > > > Marc-André Lureau (1): > docs/specs/tpm: reST-ify TPM documentation > > Stefan Berger (5): > tpm: Move tpm_tis_show_buffer to tpm_util.c > spapr: Implement get_dt_compatible() callback > tpm_spapr: Support TPM for ppc64 using CRQ based interface > tpm_spapr: Support suspend and resume > hw/ppc/Kconfig: Enable TPM_SPAPR as part of PSERIES config > > docs/specs/index.rst | 1 + > docs/specs/tpm.rst | 503 +++++++++++++++++++++++++++++++++++++ > docs/specs/tpm.txt | 427 ------------------------------- > hw/ppc/Kconfig | 1 + > hw/ppc/spapr_vio.c | 11 +- > hw/tpm/Kconfig | 6 + > hw/tpm/Makefile.objs | 1 + > hw/tpm/tpm_spapr.c | 429 +++++++++++++++++++++++++++++++ > hw/tpm/tpm_tis.c | 32 +-- > hw/tpm/tpm_util.c | 25 ++ > hw/tpm/tpm_util.h | 3 + > hw/tpm/trace-events | 16 +- > include/hw/ppc/spapr_vio.h | 1 + > include/sysemu/tpm.h | 3 + > qapi/tpm.json | 6 +- > 15 files changed, 1004 insertions(+), 461 deletions(-) > create mode 100644 docs/specs/tpm.rst > delete mode 100644 docs/specs/tpm.txt > create mode 100644 hw/tpm/tpm_spapr.c > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson