summaryrefslogtreecommitdiff
path: root/firmware/lib/vboot_display.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/lib/vboot_display.c')
-rw-r--r--firmware/lib/vboot_display.c111
1 files changed, 2 insertions, 109 deletions
diff --git a/firmware/lib/vboot_display.c b/firmware/lib/vboot_display.c
index 07e1da0a..e10a421f 100644
--- a/firmware/lib/vboot_display.c
+++ b/firmware/lib/vboot_display.c
@@ -8,6 +8,7 @@
#include "2common.h"
#include "2misc.h"
#include "2nvstorage.h"
+#include "2recovery_reasons.h"
#include "2sha.h"
#include "2sysincludes.h"
#include "vboot_api.h"
@@ -107,114 +108,6 @@ static void FillInSha1Sum(char *outbuf, struct vb2_packed_key *key)
*outbuf = '\0';
}
-const char *RecoveryReasonString(uint8_t code)
-{
- switch(code) {
- case VB2_RECOVERY_NOT_REQUESTED:
- return "Recovery not requested";
- case VB2_RECOVERY_LEGACY:
- return "Recovery requested from legacy utility";
- case VB2_RECOVERY_RO_MANUAL:
- return "recovery button pressed";
- case VB2_RECOVERY_RO_INVALID_RW:
- return "RW firmware failed signature check";
- case VB2_RECOVERY_RO_SHARED_DATA:
- return "Shared data error in read-only firmware";
- case VB2_RECOVERY_FW_KEYBLOCK:
- return "RW firmware unable to verify keyblock";
- case VB2_RECOVERY_FW_KEY_ROLLBACK:
- return "RW firmware key version rollback detected";
- case VB2_RECOVERY_FW_PREAMBLE:
- return "RW firmware unable to verify preamble";
- case VB2_RECOVERY_FW_ROLLBACK:
- return "RW firmware version rollback detected";
- case VB2_RECOVERY_FW_BODY:
- return "RW firmware unable to verify firmware body";
- case VB2_RECOVERY_RO_FIRMWARE:
- return "Firmware problem outside of verified boot";
- case VB2_RECOVERY_RO_TPM_REBOOT:
- return "TPM requires a system reboot (should be transient)";
- case VB2_RECOVERY_EC_SOFTWARE_SYNC:
- return "EC software sync error";
- case VB2_RECOVERY_EC_UNKNOWN_IMAGE:
- return "EC software sync unable to determine active EC image";
- case VB2_RECOVERY_EC_UPDATE:
- return "EC software sync error updating EC";
- case VB2_RECOVERY_EC_JUMP_RW:
- return "EC software sync unable to jump to EC-RW";
- case VB2_RECOVERY_EC_PROTECT:
- return "EC software sync protection error";
- case VB2_RECOVERY_EC_EXPECTED_HASH:
- return "EC software sync error "
- "obtaining expected EC hash from BIOS";
- case VB2_RECOVERY_SECDATA_FIRMWARE_INIT:
- return "Firmware secure NVRAM (TPM) initialization error";
- case VB2_RECOVERY_GBB_HEADER:
- return "Error parsing GBB header";
- case VB2_RECOVERY_TPM_CLEAR_OWNER:
- return "Error trying to clear TPM owner";
- case VB2_RECOVERY_DEV_SWITCH:
- return "Error reading or updating developer switch";
- case VB2_RECOVERY_FW_SLOT:
- return "Error selecting RW firmware slot";
- case VB2_RECOVERY_AUX_FW_UPDATE:
- return "Error updating AUX firmware";
- case VB2_RECOVERY_RO_UNSPECIFIED:
- return "Unspecified/unknown error in RO firmware";
- case VB2_RECOVERY_RW_INVALID_OS:
- return "OS kernel or rootfs failed signature check";
- case VB2_RECOVERY_RW_SHARED_DATA:
- return "Shared data error in rewritable firmware";
- case VB2_RECOVERY_TPM_E_FAIL:
- return "TPM error that was not fixed by reboot";
- case VB2_RECOVERY_RO_TPM_S_ERROR:
- return "TPM setup error in read-only firmware";
- case VB2_RECOVERY_RO_TPM_W_ERROR:
- return "TPM write error in read-only firmware";
- case VB2_RECOVERY_RO_TPM_L_ERROR:
- return "TPM lock error in read-only firmware";
- case VB2_RECOVERY_RO_TPM_U_ERROR:
- return "TPM update error in read-only firmware";
- case VB2_RECOVERY_RW_TPM_R_ERROR:
- return "TPM read error in rewritable firmware";
- case VB2_RECOVERY_RW_TPM_W_ERROR:
- return "TPM write error in rewritable firmware";
- case VB2_RECOVERY_RW_TPM_L_ERROR:
- return "TPM lock error in rewritable firmware";
- case VB2_RECOVERY_EC_HASH_FAILED:
- return "EC software sync unable to get EC image hash";
- case VB2_RECOVERY_EC_HASH_SIZE:
- return "EC software sync invalid image hash size";
- case VB2_RECOVERY_LK_UNSPECIFIED:
- return "Unspecified error while trying to load kernel";
- case VB2_RECOVERY_RW_NO_DISK:
- return "No bootable storage device in system";
- case VB2_RECOVERY_RW_NO_KERNEL:
- return "No bootable kernel found on disk";
- case VB2_RECOVERY_SECDATA_KERNEL_INIT:
- return "Kernel secure NVRAM (TPM) initialization error";
- case VB2_RECOVERY_RO_TPM_REC_HASH_L_ERROR:
- return "Recovery hash space lock error in RO firmware";
- case VB2_RECOVERY_TPM_DISABLE_FAILED:
- return "Failed to disable TPM before running untrusted code";
- case VB2_RECOVERY_ALTFW_HASH_FAILED:
- return "Verification of alternative firmware payload failed";
- case VB2_RECOVERY_CR50_BOOT_MODE:
- return "Failed to get boot mode from Cr50";
- case VB2_RECOVERY_ESCAPE_NO_BOOT:
- return "Attempt to escape from NO_BOOT mode was detected";
- case VB2_RECOVERY_RW_UNSPECIFIED:
- return "Unspecified/unknown error in RW firmware";
- case VB2_RECOVERY_US_TEST:
- return "Recovery mode test from user-mode";
- case VB2_RECOVERY_TRAIN_AND_REBOOT:
- return "User-mode requested DRAM train and reboot";
- case VB2_RECOVERY_US_UNSPECIFIED:
- return "Unspecified/unknown error in user-mode";
- }
- return "Unknown or deprecated error code";
-}
-
#define DEBUG_INFO_SIZE 1024
#define DEBUG_INFO_APPEND(format, args...) do { \
if (used < DEBUG_INFO_SIZE) \
@@ -249,7 +142,7 @@ vb2_error_t VbDisplayDebugInfo(struct vb2_context *ctx)
i = vb2_nv_get(ctx, VB2_NV_RECOVERY_SUBCODE);
DEBUG_INFO_APPEND("\nrecovery_reason: %#.2x / %#.2x %s",
sd->recovery_reason, i,
- RecoveryReasonString(sd->recovery_reason));
+ vb2_get_recovery_reason_string(sd->recovery_reason));
/* Add vb2_context and vb2_shared_data flags */
DEBUG_INFO_APPEND("\ncontext.flags: %#.16" PRIx64, ctx->flags);