-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'tpmdd-next-6.15-rc1' of git://git.kernel.org/pub/scm/linux…
…/kernel/git/jarkko/linux-tpmdd Pull tpm updates from Jarkko Sakkinen: "This contains a new driver: a TPM FF-A driver. FF comes from Firmware Framework, and A comes from Arm's A-profile. FF-A is essentially a standard mechanism to communicate with TrustZone apps such as TPM. Other than that, this includes a pile of fixes and small improvments" * tag 'tpmdd-next-6.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd: tpm: Make chip->{status,cancel,req_canceled} opt MAINTAINERS: TPM DEVICE DRIVER: add missing includes tpm: End any active auth session before shutdown Documentation: tpm: Add documentation for the CRB FF-A interface tpm_crb: Add support for the ARM FF-A start method ACPICA: Add start method for ARM FF-A tpm_crb: Clean-up and refactor check for idle support tpm_crb: ffa_tpm: Implement driver compliant to CRB over FF-A tpm/tpm_ftpm_tee: fix struct ftpm_tee_private documentation tpm, tpm_tis: Workaround failed command reception on Infineon devices tpm, tpm_tis: Fix timeout handling when waiting for TPM status tpm: Convert warn to dbg in tpm2_start_auth_session() tpm: Lazily flush auth session when getting random data tpm: ftpm_tee: remove incorrect of_match_ptr annotation tpm: do not start chip while suspended
- Loading branch information
Showing
18 changed files
with
590 additions
and
58 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,3 +10,4 @@ Trusted Platform Module documentation | |
tpm_vtpm_proxy | ||
xen-tpmfront | ||
tpm_ftpm_tee | ||
tpm_ffa_crb |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
.. SPDX-License-Identifier: GPL-2.0 | ||
======================== | ||
TPM CRB over FF-A Driver | ||
======================== | ||
|
||
The TPM Command Response Buffer (CRB) interface is a standard TPM interface | ||
defined in the TCG PC Client Platform TPM Profile (PTP) Specification [1]_. | ||
The CRB provides a structured set of control registers a client uses when | ||
interacting with a TPM as well as a data buffer for storing TPM commands and | ||
responses. A CRB interface can be implemented in: | ||
|
||
- hardware registers in a discrete TPM chip | ||
|
||
- in memory for a TPM running in isolated environment where shared memory | ||
allows a client to interact with the TPM | ||
|
||
The Firmware Framework for Arm A-profile (FF-A) [2]_ is a specification | ||
that defines interfaces and protocols for the following purposes: | ||
|
||
- Compartmentalize firmware into software partitions that run in the Arm | ||
Secure world environment (also know as TrustZone) | ||
|
||
- Provide a standard interface for software components in the Non-secure | ||
state, for example OS and Hypervisors, to communicate with this firmware. | ||
|
||
A TPM can be implemented as an FF-A secure service. This could be a firmware | ||
TPM or could potentially be a TPM service that acts as a proxy to a discrete | ||
TPM chip. An FF-A based TPM abstracts hardware details (e.g. bus controller | ||
and chip selects) away from the OS and can protect locality 4 from access | ||
by an OS. The TCG-defined CRB interface is used by clients to interact | ||
with the TPM service. | ||
|
||
The Arm TPM Service Command Response Buffer Interface Over FF-A [3]_ | ||
specification defines FF-A messages that can be used by a client to signal | ||
when updates have been made to the CRB. | ||
|
||
How the Linux CRB driver interacts with FF-A is summarized below: | ||
|
||
- The tpm_crb_ffa driver registers with the FF-A subsystem in the kernel | ||
with an architected TPM service UUID defined in the CRB over FF-A spec. | ||
|
||
- If a TPM service is discovered by FF-A, the probe() function in the | ||
tpm_crb_ffa driver runs, and the driver initializes. | ||
|
||
- The probing and initialization of the Linux CRB driver is triggered | ||
by the discovery of a TPM advertised via ACPI. The CRB driver can | ||
detect the type of TPM through the ACPI 'start' method. The start | ||
method for Arm FF-A was defined in TCG ACPI v1.4 [4]_. | ||
|
||
- When the CRB driver performs its normal functions such as signaling 'start' | ||
and locality request/relinquish it invokes the tpm_crb_ffa_start() funnction | ||
in the tpm_crb_ffa driver which handles the FF-A messaging to the TPM. | ||
|
||
References | ||
========== | ||
|
||
.. [1] **TCG PC Client Platform TPM Profile (PTP) Specification** | ||
https://trustedcomputinggroup.org/resource/pc-client-platform-tpm-profile-ptp-specification/ | ||
.. [2] **Arm Firmware Framework for Arm A-profile (FF-A)** | ||
https://developer.arm.com/documentation/den0077/latest/ | ||
.. [3] **Arm TPM Service Command Response Buffer Interface Over FF-A** | ||
https://developer.arm.com/documentation/den0138/latest/ | ||
.. [4] **TCG ACPI Specification** | ||
https://trustedcomputinggroup.org/resource/tcg-acpi-specification/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.