summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTsung Ho Wu <tsungho.wu@gmail.com>2019-06-07 15:03:49 -0700
committerPhilipp Deppenwiese <zaolin.daisuki@gmail.com>2019-06-27 10:04:17 +0000
commit804a0433e0a793876b954ad162f6efeef8f9a5d6 (patch)
treeb3aedd368a3fb49cb9d1a0102822def97f6e0372
parent1b35295ec2fe6c30c862baf79b08526cd8b4f1c4 (diff)
downloadcoreboot-804a0433e0a793876b954ad162f6efeef8f9a5d6.tar.xz
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>
-rw-r--r--src/drivers/pc80/tpm/tis.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/drivers/pc80/tpm/tis.c b/src/drivers/pc80/tpm/tis.c
index e10332ba0a..23de003b47 100644
--- a/src/drivers/pc80/tpm/tis.c
+++ b/src/drivers/pc80/tpm/tis.c
@@ -146,10 +146,18 @@ static const struct device_name stmicro_devices[] = {
{0xffff}
};
+static const struct device_name swtpm_devices[] = {
+#if CONFIG(TPM2)
+ {0x0001, "SwTPM 2.0" },
+#endif
+ {0xffff}
+};
+
static const struct vendor_name vendor_names[] = {
{0x1114, "Atmel", atmel_devices},
{0x15d1, "Infineon", infineon_devices},
{0x1050, "Nuvoton", nuvoton_devices},
+ {0x1014, "TPM Emulator", swtpm_devices},
{0x104a, "ST Microelectronics", stmicro_devices},
};