[coreboot-gerrit] New patch to review for coreboot: vboot: Allow other platforms to use soft reboot workaround
Lee Leahy (leroy.p.leahy@intel.com)
gerrit at coreboot.org
Tue Mar 14 02:35:13 CET 2017
Lee Leahy (leroy.p.leahy at intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/18798
-gerrit
commit e1b275592fe868bdf4a06c85987fab0a511be4d7
Author: Lee Leahy <leroy.p.leahy at intel.com>
Date: Mon Mar 13 17:25:36 2017 -0700
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 at intel.com>
---
src/vboot/Kconfig | 4 ++++
src/vboot/secdata_tpm.c | 34 +++++++++++++++++-----------------
2 files changed, 21 insertions(+), 17 deletions(-)
diff --git a/src/vboot/Kconfig b/src/vboot/Kconfig
index b5c8626..e67c108 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 c5d08ce..5e9b5a3 100644
--- a/src/vboot/secdata_tpm.c
+++ b/src/vboot/secdata_tpm.c
@@ -424,23 +424,23 @@ 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(TEGRA_SOFT_REBOOT_WORKAROUND)
+ || 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
More information about the coreboot-gerrit
mailing list