diff options
author | Stefan Berger | 2015-05-26 22:51:05 +0200 |
---|---|---|
committer | Michael S. Tsirkin | 2015-05-31 20:29:02 +0200 |
commit | 116694c34aa794a994051fce55bfee418fe1521d (patch) | |
tree | a39a2b1c07f50854b990705b347b8e2f2f73a6d9 /hw/tpm/tpm_passthrough.c | |
parent | Add stream ID to MSI write (diff) | |
download | qemu-116694c34aa794a994051fce55bfee418fe1521d.tar.gz qemu-116694c34aa794a994051fce55bfee418fe1521d.tar.xz qemu-116694c34aa794a994051fce55bfee418fe1521d.zip |
Extend TPM TIS interface to support TPM 2
Following the recent upgrade to version 1.3, extend the TPM TIS
interface with capabilities introduced for support of a TPM 2.
TPM TIS for TPM 2 introduced the following extensions beyond the
TPM TIS 1.3 (used for TPM 1.2):
- A new 32bit interface Id register was introduced.
- New flags for the status (STS) register were defined.
- New flags for the capability flags were defined.
Support the above if a TPM TIS 1.3 for TPM 2 is used with a TPM 2
on the backend side. Support the old TPM TIS 1.3 configuration if a
TPM 1.2 is being used. A subsequent patch will then determine which
TPM version is being used in the backend.
Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'hw/tpm/tpm_passthrough.c')
-rw-r--r-- | hw/tpm/tpm_passthrough.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/hw/tpm/tpm_passthrough.c b/hw/tpm/tpm_passthrough.c index 73ca906282..f1361d2cb6 100644 --- a/hw/tpm/tpm_passthrough.c +++ b/hw/tpm/tpm_passthrough.c @@ -267,6 +267,13 @@ static bool tpm_passthrough_get_tpm_established_flag(TPMBackend *tb) return false; } +static int tpm_passthrough_reset_tpm_established_flag(TPMBackend *tb, + uint8_t locty) +{ + /* only a TPM 2.0 will support this */ + return 0; +} + static bool tpm_passthrough_get_startup_error(TPMBackend *tb) { TPMPassthruState *tpm_pt = TPM_PASSTHROUGH(tb); @@ -324,6 +331,11 @@ static const char *tpm_passthrough_create_desc(void) return "Passthrough TPM backend driver"; } +static TPMVersion tpm_passthrough_get_tpm_version(TPMBackend *tb) +{ + return TPM_VERSION_1_2; +} + /* * A basic test of a TPM device. We expect a well formatted response header * (error response is fine) within one second. @@ -540,6 +552,8 @@ static const TPMDriverOps tpm_passthrough_driver = { .deliver_request = tpm_passthrough_deliver_request, .cancel_cmd = tpm_passthrough_cancel_cmd, .get_tpm_established_flag = tpm_passthrough_get_tpm_established_flag, + .reset_tpm_established_flag = tpm_passthrough_reset_tpm_established_flag, + .get_tpm_version = tpm_passthrough_get_tpm_version, }; static void tpm_passthrough_inst_init(Object *obj) |