[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