diff options
author | Lee Leahy <leroy.p.leahy@intel.com> | 2017-03-13 17:25:36 -0700 |
---|---|---|
committer | Lee Leahy <leroy.p.leahy@intel.com> | 2017-03-14 23:10:00 +0100 |
commit | 33efd98cfd92f4e7c2cfc670c718c5b187f11659 (patch) | |
tree | 879770fd98418a312ad4aa44edf0591e2e13c3b2 | |
parent | c253a92299d832a39af4bed1818255ab61674d10 (diff) |
vboot: Allow other platforms to use soft reboot workaround
Add a Kconfig value to enable other platforms to use the soft reboot
workaround.
TEST=Build and run on Galileo Gen2
Change-Id: I5a7ebd200229654128d367ecb50647ff69bb5258
Signed-off-by: Lee Leahy <leroy.p.leahy@intel.com>
Reviewed-on: https://review.coreboot.org/18798
Tested-by: Martin Roth <martinroth@google.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
-rw-r--r-- | src/vboot/Kconfig | 4 | ||||
-rw-r--r-- | src/vboot/secdata_tpm.c | 33 |
2 files changed, 20 insertions, 17 deletions
diff --git a/src/vboot/Kconfig b/src/vboot/Kconfig index b5c862620f..e67c108d4a 100644 --- a/src/vboot/Kconfig +++ b/src/vboot/Kconfig @@ -142,6 +142,10 @@ config VBOOT_HAS_REC_HASH_SPACE Set this option to indicate to vboot that recovery data hash space is present in TPM. +config VBOOT_SOFT_REBOOT_WORKAROUND + bool + default n + config VBOOT bool "Verify firmware with vboot." default n diff --git a/src/vboot/secdata_tpm.c b/src/vboot/secdata_tpm.c index c5d08ce27f..37bba80f06 100644 --- a/src/vboot/secdata_tpm.c +++ b/src/vboot/secdata_tpm.c @@ -424,23 +424,22 @@ uint32_t setup_tpm(struct vb2_context *ctx) return TPM_SUCCESS; } -#ifdef TEGRA_SOFT_REBOOT_WORKAROUND - result = tlcl_startup(); - if (result == TPM_E_INVALID_POSTINIT) { - /* - * Some prototype hardware doesn't reset the TPM on a CPU - * reset. We do a hard reset to get around this. - */ - VBDEBUG("TPM: soft reset detected\n", result); - ctx->flags |= VB2_CONTEXT_SECDATA_WANTS_REBOOT; - return TPM_E_MUST_REBOOT; - } else if (result != TPM_SUCCESS) { - VBDEBUG("TPM: tlcl_startup returned %08x\n", result); - return result; - } -#else - RETURN_ON_FAILURE(tlcl_startup()); -#endif + if (IS_ENABLED(CONFIG_VBOOT_SOFT_REBOOT_WORKAROUND)) { + result = tlcl_startup(); + if (result == TPM_E_INVALID_POSTINIT) { + /* + * Some prototype hardware doesn't reset the TPM on a CPU + * reset. We do a hard reset to get around this. + */ + VBDEBUG("TPM: soft reset detected\n"); + ctx->flags |= VB2_CONTEXT_SECDATA_WANTS_REBOOT; + return TPM_E_MUST_REBOOT; + } else if (result != TPM_SUCCESS) { + VBDEBUG("TPM: tlcl_startup returned %08x\n", result); + return result; + } + } else + RETURN_ON_FAILURE(tlcl_startup()); /* * Some TPMs start the self test automatically at power on. In that case |