mbox series

[0/6,v4] TPM cleanups and MMIO driver

Message ID 20211103150910.69732-1-ilias.apalodimas@linaro.org
Headers show
Series TPM cleanups and MMIO driver | expand

Message

Ilias Apalodimas Nov. 3, 2021, 3:09 p.m. UTC
Hi! 

This is the followup series on the TPM cleanup and driver additions.

The major change since v3 [1] is that I implemented Simon's request and
converted an existing driver using the API.  We now have two consumers of
the API, MMIO and SPI TPMs.  It's worth noting that using the API reduces
the code duplication in the SPI TPM driver a lot.  

I've tested the SPI TPM on an RPI4 with [2]. As far as I can tell everything
seems to be working fine, including the EFI TCG2 protocol.  The MMIO one was
tested with QEMU and SWTPM [3] and I've added documentation on how to reproduce
that.

There was also a discussion on v2 [4] regarding the MMIO accesses and if we
should convert those to a uclass.  But the MMIO functions are just
calling io(read|write),  so after considering it for a while,  I couldn't
find any reasonable abstraction that would justify another uclass.

[1] https://lore.kernel.org/u-boot/20210708082310.87540-1-ilias.apalodimas@linaro.org/
[2] https://buyzero.de/en/products/letstrust-hardware-tpm-trusted-platform-module
[3] https://github.com/stefanberger/swtpm
[4] https://lore.kernel.org/u-boot/CAPnjgZ1U6VgeOcTuy-G=nbYFTNnu_8MqGf-o6LF6ivk=TwE4iQ@mail.gmail.com/

Changes since v3:
- Coverted SPI TPM to use the API as well
- moved some log_info to log_debug
- Added documentation on how to run QEMU and enabled TPM by default on arm qemu
  builds
Changes since v2:
- Add myself as a maintainer on TPM drivers
Changes since v1:
- split off the tis core code into a different file

Ilias Apalodimas (6):
  tpm2: Introduce TIS tpm core
  tpm2: Add a TPMv2 MMIO TIS driver
  tpm: Use the new API on tpm2 spi driver
  configs: Enable tpmv2 mmio on qemu for arm/arm64
  doc: qemu: Add instructions for swtpm usage
  MAINTAINERS: Add entry for TPM drivers

 MAINTAINERS                      |   5 +
 configs/qemu_arm64_defconfig     |   2 +
 configs/qemu_arm_defconfig       |   2 +
 doc/board/emulation/qemu-arm.rst |  25 ++
 drivers/tpm/Kconfig              |   9 +
 drivers/tpm/Makefile             |   3 +-
 drivers/tpm/tpm2_tis_core.c      | 523 +++++++++++++++++++++++++++++++
 drivers/tpm/tpm2_tis_mmio.c      | 152 +++++++++
 drivers/tpm/tpm2_tis_spi.c       | 440 ++------------------------
 drivers/tpm/tpm_tis.h            |  39 +++
 include/tpm-v2.h                 |   1 +
 11 files changed, 791 insertions(+), 410 deletions(-)
 create mode 100644 drivers/tpm/tpm2_tis_core.c
 create mode 100644 drivers/tpm/tpm2_tis_mmio.c

-- 
2.33.1