diff options
-rw-r--r-- | firmware/include/vboot_nvstorage.h | 10 | ||||
-rw-r--r-- | firmware/lib/vboot_display.c | 15 |
2 files changed, 24 insertions, 1 deletions
diff --git a/firmware/include/vboot_nvstorage.h b/firmware/include/vboot_nvstorage.h index f71a55ab..4401777e 100644 --- a/firmware/include/vboot_nvstorage.h +++ b/firmware/include/vboot_nvstorage.h @@ -183,6 +183,16 @@ typedef enum VbFwResult { #define VBNV_RECOVERY_EC_EXPECTED_HASH 0x29 /* EC software sync - expected EC image doesn't match hash */ #define VBNV_RECOVERY_EC_HASH_MISMATCH 0x2A +/* VB2: Secure data inititalization error */ +#define VBNV_RECOVERY_VB2_SECDATA_INIT 0x2B +/* VB2: GBB header is bad */ +#define VBNV_RECOVERY_VB2_GBB_HEADER 0x2C +/* VB2: Unable to clear TPM owner */ +#define VBNV_RECOVERY_VB2_TPM_CLEAR_OWNER 0x2D +/* VB2: Error determining/updating virtual dev switch */ +#define VBNV_RECOVERY_VB2_DEV_SWITCH 0x2E +/* VB2: Error determining firmware slot */ +#define VBNV_RECOVERY_VB2_FW_SLOT 0x2F /* Unspecified/unknown error in read-only firmware */ #define VBNV_RECOVERY_RO_UNSPECIFIED 0x3F /* diff --git a/firmware/lib/vboot_display.c b/firmware/lib/vboot_display.c index c66af8df..26fa8bd4 100644 --- a/firmware/lib/vboot_display.c +++ b/firmware/lib/vboot_display.c @@ -430,6 +430,16 @@ const char *RecoveryReasonString(uint8_t code) return "EC software sync unable to jump to EC-RW"; case VBNV_RECOVERY_EC_PROTECT: return "EC software sync protection error"; + case VBNV_RECOVERY_VB2_SECDATA_INIT: + return "Secure NVRAM (TPM) initialization error"; + case VBNV_RECOVERY_VB2_GBB_HEADER: + return "Error parsing GBB header"; + case VBNV_RECOVERY_VB2_TPM_CLEAR_OWNER: + return "Error trying to clear TPM owner"; + case VBNV_RECOVERY_VB2_DEV_SWITCH: + return "Error reading or updating developer switch"; + case VBNV_RECOVERY_VB2_FW_SLOT: + return "Error selecting RW firmware slot"; case VBNV_RECOVERY_RO_UNSPECIFIED: return "Unspecified/unknown error in RO firmware"; case VBNV_RECOVERY_RW_DEV_SCREEN: @@ -511,11 +521,14 @@ VbError_t VbDisplayDebugInfo(VbCommonParams *cparams, VbNvContext *vncptr) used += StrnAppend(buf + used, "HWID: ", DEBUG_INFO_SIZE - used); used += StrnAppend(buf + used, hwid, DEBUG_INFO_SIZE - used); - /* Add recovery reason */ + /* Add recovery reason and subcode */ + VbNvGet(vncptr, VBNV_RECOVERY_SUBCODE, &i); used += StrnAppend(buf + used, "\nrecovery_reason: 0x", DEBUG_INFO_SIZE - used); used += Uint64ToString(buf + used, DEBUG_INFO_SIZE - used, shared->recovery_reason, 16, 2); + used += StrnAppend(buf + used, " / 0x", DEBUG_INFO_SIZE - used); + used += Uint64ToString(buf + used, DEBUG_INFO_SIZE - used, i, 16, 2); used += StrnAppend(buf + used, " ", DEBUG_INFO_SIZE - used); used += StrnAppend(buf + used, RecoveryReasonString(shared->recovery_reason), |