drivers/pc80/tpm: add support for TPM emulator SwTPM 2.0 module

Add software TPM 2.0 emulator to tpm device probe list.
SwTPM: https://github.com/stefanberger/swtpm

Tested on qemu q35 with MAINBOARD_HAS_LPC_TPM and MAINBOARD_HAS_TPM2
set in qemu-q35 Kconfig.
Qemu: see qemu flags at
https://s3hh.wordpress.com/2018/06/03/tpm-2-0-in-qemu/

How to see it work.
Ubuntu 18.04:
1. Install SwTPM from https://github.com/stefanberger/swtpm

2. Add MAINBOARD_HAS_LPC_TPM and MAINBOARD_HAS_TPM2 to
src/mainboard/emulation/qemu-q35/Kconfig and rebuild
coreboot.rom

3. mkdir -p swtpm0

4. swtpm socket --tpmstate dir=swtpm0 --tpm2 --ctrl \
type=unixio,path=swtpm0/swtpm-sock --log level=20 &

5. qemu-system-x86_64 -machine q35 -m 2G \
-chardev socket,id=chrtpm,path=swtpm0/swtpm-sock \
-tpmdev emulator,id=tpm0,chardev=chrtpm -device \
tpm-tis,tpmdev=tpm0 -pflash build/coreboot.rom \
-serial $(tty) -display none

6. Check boot log and search 'Found TPM'.

Change-Id: I5f58d2c117afbd057bb91697912db826db1d67a1
Signed-off-by: Tsung Ho Wu <tsungho.wu@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/33302
Reviewed-by: Philipp Deppenwiese <zaolin.daisuki@gmail.com>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Tsung Ho Wu 2019-06-07 15:03:49 -07:00 committed by Philipp Deppenwiese
parent 1b35295ec2
commit 804a0433e0
1 changed files with 8 additions and 0 deletions

View File

@ -146,10 +146,18 @@ static const struct device_name stmicro_devices[] = {
{0xffff} {0xffff}
}; };
static const struct device_name swtpm_devices[] = {
#if CONFIG(TPM2)
{0x0001, "SwTPM 2.0" },
#endif
{0xffff}
};
static const struct vendor_name vendor_names[] = { static const struct vendor_name vendor_names[] = {
{0x1114, "Atmel", atmel_devices}, {0x1114, "Atmel", atmel_devices},
{0x15d1, "Infineon", infineon_devices}, {0x15d1, "Infineon", infineon_devices},
{0x1050, "Nuvoton", nuvoton_devices}, {0x1050, "Nuvoton", nuvoton_devices},
{0x1014, "TPM Emulator", swtpm_devices},
{0x104a, "ST Microelectronics", stmicro_devices}, {0x104a, "ST Microelectronics", stmicro_devices},
}; };