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>
This commit is contained in:
Lee Leahy
2017-03-13 17:25:36 -07:00
parent c253a92299
commit 33efd98cfd
2 changed files with 20 additions and 17 deletions

View File

@ -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

View File

@ -424,23 +424,22 @@ uint32_t setup_tpm(struct vb2_context *ctx)
return TPM_SUCCESS;
}
#ifdef TEGRA_SOFT_REBOOT_WORKAROUND
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", result);
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
} else
RETURN_ON_FAILURE(tlcl_startup());
#endif
/*
* Some TPMs start the self test automatically at power on. In that case