On Thu Apr 11, 2024 at 1:50 PM EEST, Bagas Sanjaya wrote: > On Tue, Apr 09, 2024 at 10:08:47PM +0300, Jarkko Sakkinen wrote: > > diff --git a/Documentation/security/tpm/tpm_tis.rst b/Documentation/security/tpm/tpm_tis.rst > > new file mode 100644 > > index 000000000000..b448ea3db71d > > --- /dev/null > > +++ b/Documentation/security/tpm/tpm_tis.rst > > @@ -0,0 +1,46 @@ > > +.. SPDX-License-Identifier: GPL-2.0 > > + > > +========================= > > +TPM FIFO interface driver > > +========================= > > + > > +TCG PTP Specification defines two interface types: FIFO and CRB. The former is > > +based on sequenced read and write operations, and the latter is based on a > > +buffer containing the full command or response. > > + > > +FIFO (First-In-First-Out) interface is used by the tpm_tis_core dependent > > +drivers. Originally Linux had only a driver called tpm_tis, which covered > > +memory mapped (aka MMIO) interface but it was later on extended to cover other > > +physical interfaces supported by the TCG standard. > > + > > +For legacy compliance the original MMIO driver is called tpm_tis and the > Did you mean "For historical reasons above ..."? That would be better wording. > > +framework for FIFO drivers is named as tpm_tis_core. The postfix "tis" in > > +tpm_tis comes from the TPM Interface Specification, which is the hardware > > +interface specification for TPM 1.x chips. > > + > > +Communication is based on a 20 KiB buffer shared by the TPM chip through a > > +hardware bus or memory map, depending on the physical wiring. The buffer is > > +further split into five equal-size 4 KiB buffers, which provide equivalent > > +sets of registers for communication between the CPU and TPM. These > > +communication endpoints are called localities in the TCG terminology. > > + > > +When the kernel wants to send commands to the TPM chip, it first reserves > > +locality 0 by setting the requestUse bit in the TPM_ACCESS register. The bit is > > +cleared by the chip when the access is granted. Once it completes its > > +communication, the kernel writes the TPM_ACCESS.activeLocality bit. This > > +informs the chip that the locality has been relinquished. > > + > > +Pending localities are served in order by the chip in descending order, one at > > +a time: > > + > > +- Locality 0 has the lowest priority. > > +- Locality 5 has the highest priority. > > + > > +Further information on the purpose and meaning of the localities can be found > > +in section 3.2 of the TCG PC Client Platform TPM Profile Specification. > > + > > +References > > +========== > > + > > +TCG PC Client Platform TPM Profile (PTP) Specification > > +https://trustedcomputinggroup.org/resource/pc-client-platform-tpm-profile-ptp-specification/ > > Other than that, > > Reviewed-by: Bagas Sanjaya <bagasdotme@xxxxxxxxx> Thanks! I'll apply this with the fix you proposed. For everyone: this is by no means perfect. The point is to seed something we can build on top of. So I leave it rather lacking stuff than try to document every possible bells and whistle. This can be then improved based on discussions and future patch sets. BR, Jarkko