Make the key for reaching the TPM menu configurable since the Chromebooks don't have F11.
Allow the TPM to be initialized by other firmware, so disregard certain TPM error codes.
Signed-off-by: Stefan Berger stefanb@linux.vnet.ibm.com --- src/boot.c | 3 ++- src/tcgbios.c | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/src/boot.c b/src/boot.c index 5533529..c5b9d1d 100644 --- a/src/boot.c +++ b/src/boot.c @@ -461,6 +461,7 @@ interactive_bootmenu(void)
char *bootmsg = romfile_loadfile("etc/boot-menu-message", NULL); int menukey = romfile_loadint("etc/boot-menu-key", 0x86); + int menukey_tpm = romfile_loadint("etc/boot-menu-key-tpm", 0x85); again: printf("%s", bootmsg ?: "\nPress F12 for boot menu.\n"); if (detected_tpm()) @@ -471,7 +472,7 @@ again: enable_bootsplash(); int scan_code = get_keystroke(menutime); disable_bootsplash(); - if (detected_tpm() && scan_code == 0x85) { + if (detected_tpm() && scan_code == menukey_tpm) { tcpa_menu(); goto again; } diff --git a/src/tcgbios.c b/src/tcgbios.c index bdeedb8..3c1d514 100644 --- a/src/tcgbios.c +++ b/src/tcgbios.c @@ -492,7 +492,15 @@ tcpa_startup(void) tcpa_state.startup_error = rc ? rc : returnCode; #endif
- if (rc || returnCode) +#ifdef CONFIG_COREBOOT + /* with other firmware on the system the TPM may already have been + * initialized + */ + if (returnCode == TPM_INVALID_POSTINIT) + returnCode = 0; +#endif + + if (rc || returnCode) goto err_exit;
rc = build_and_send_cmd(TPM_ORD_SelfTestFull, NULL, 0,