These patches are based on ppc-for-4.2 and are also available at: https://github.com/mdroth/qemu/commits/spapr-tpm-hcall-v2
This patchset implements the H_TPM_COMM hypercall, which provides a way for an Ultravisor to pass raw TPM commands on to a host's TPM device, either directly or through a TPM Resource Manager (needed to support multiple guests). Secure VMs running on an Ultravisor have a symmetric key that is encrypted using a public key that is bound to a trusted host's TPM hardware. This hypercall provides a means to decrypt the symmetric key on behalf of a Secure VMs using the host's TPM hardware. More details are provided in the spec summary introduced in patch 1. Changes since v1: - use separate hcall table for SVM hcall range (David) - document reserved hcall range in ppc-spapr-uv-hcalls.txt Changes since RFC/v0: - configure TPM path via -device spapr-tpm-proxy instead of -machine (David) - return H_FUNCTION (not H_RESOURCE) if TPM has not been configured (David) - drop use of global for storing TPM FD (David) - fix checkpatch errors relating to case statement indents, newlines in error_report(), and lines over 80. - fix some minor typos in documentation - rebased on ppc-for-4.2 docs/specs/ppc-spapr-uv-hcalls.txt | 76 +++++++++++++++++++++++++++ hw/ppc/Makefile.objs | 1 + hw/ppc/spapr.c | 33 +++++++++++- hw/ppc/spapr_hcall.c | 13 +++++ hw/ppc/spapr_tpm_proxy.c | 176 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ hw/ppc/trace-events | 4 ++ include/hw/ppc/spapr.h | 11 ++++ include/hw/ppc/spapr_tpm_proxy.h | 31 +++++++++++ 8 files changed, 344 insertions(+), 1 deletion(-)