
The TPM device provides the random number generator(RNG) functionality, whereby sending a command to the TPM device results in the TPM device responding with random bytes.
There was a discussion on the mailing list earlier[1], where it was explained that platforms with a TPM device can install the EFI_RNG_PROTOCOL for getting the random bytes instead of populating the dtb with the kaslr-seed property. That would make it possible to measure the dtb.
The TPM uclass driver adds the RNG child device as part of it's post_probe function.
Some additional changes have also been made to facilitate the use of the RNG devices, including extending the 'rng' command to take the RNG device as one of the command-line parameters.
This series depends on a patch[2] from Simon Glass for moving the TPM device version detection functions to the tpm_api.h header as static inline functions.
[1] - https://lore.kernel.org/u-boot/20220103120738.47835-1-ilias.apalodimas@linar... [2] - https://lore.kernel.org/u-boot/20220301001125.1554442-2-sjg@chromium.org/T/#...
Changes since V7: * Added a paragraph in the commit message highlighting the absence of the compatible string in the RNG driver, as suggested by Simon. * Rearranged the inclusion of headers as per the coding style guidelines, as suggested by Simon. * Use TPM_RNG_DRV_NAME for the RNG child name as suggested by Simon.
Ilias Apalodimas (1): efi_loader: initialize the RNG protocol after the TCC2
Simon Glass (1): tpm: Export the TPM-version functions
Sughosh Ganu (6): tpm: rng: Add driver model interface for TPM RNG device tpm: Add the RNG child device cmd: rng: Add support for selecting RNG device cmd: rng: Use a statically allocated array for random bytes doc: rng: Add documentation for the rng command test: rng: Add a UT testcase for the rng command
cmd/Kconfig | 1 + cmd/rng.c | 42 ++++++++++------ doc/usage/cmd/rng.rst | 26 ++++++++++ doc/usage/index.rst | 1 + drivers/rng/Kconfig | 9 ++++ drivers/rng/Makefile | 1 + drivers/rng/tpm_rng.c | 23 +++++++++ drivers/tpm/tpm-uclass.c | 40 +++++++++++++--- include/tpm_api.h | 10 ++++ lib/Kconfig | 1 + lib/efi_loader/efi_setup.c | 14 +++--- lib/tpm_api.c | 98 +++++++++++++++++--------------------- test/dm/rng.c | 29 +++++++++++ 13 files changed, 213 insertions(+), 82 deletions(-) create mode 100644 doc/usage/cmd/rng.rst create mode 100644 drivers/rng/tpm_rng.c