/* Copyright (c) 2014 The Chromium OS Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. * * Recovery reasons */ #ifndef VBOOT_REFERENCE_2RECOVERY_REASONS_H_ #define VBOOT_REFERENCE_2RECOVERY_REASONS_H_ /* Recovery reason codes */ enum vb2_nv_recovery { /* Recovery not requested. */ VB2_RECOVERY_NOT_REQUESTED = 0x00, /* * Recovery requested from legacy utility. (Prior to the NV storage * spec, recovery mode was a single bitfield; this value is reserved so * that scripts which wrote 1 to the recovery field are distinguishable * from scripts whch use the recovery reasons listed here. */ VB2_RECOVERY_LEGACY = 0x01, /* User manually requested recovery via recovery button */ VB2_RECOVERY_RO_MANUAL = 0x02, /* * RW firmware failed signature check (neither RW firmware slot was * valid) */ VB2_RECOVERY_RO_INVALID_RW = 0x03, /* S3 resume failed */ VB2_RECOVERY_RO_S3_RESUME = 0x04, /* TPM error in read-only firmware (deprecated) */ VB2_RECOVERY_DEP_RO_TPM_ERROR = 0x05, /* Shared data error in read-only firmware */ VB2_RECOVERY_RO_SHARED_DATA = 0x06, /* Test error from S3Resume() */ VB2_RECOVERY_RO_TEST_S3 = 0x07, /* Test error from LoadFirmwareSetup() (deprecated) */ VB2_RECOVERY_RO_TEST_LFS = 0x08, /* Test error from LoadFirmware() (deprecated) */ VB2_RECOVERY_RO_TEST_LF = 0x09, /* * RW firmware failed signature check (neither RW firmware slot was * valid). Recovery reason is VB2_RECOVERY_RO_INVALID_RW_CHECK_MIN + * the check value for the slot which came closest to validating; see * VBSD_LF_CHECK_* in vboot_struct.h. */ VB2_RECOVERY_RO_INVALID_RW_CHECK_MIN = 0x10, /* Latest tried RW firmware keyblock verification failed */ VB2_RECOVERY_FW_KEYBLOCK = 0x13, /* Latest tried RW firmware key version too old */ VB2_RECOVERY_FW_KEY_ROLLBACK = 0x14, /* Latest tried RW firmware preamble verification failed */ VB2_RECOVERY_FW_PREAMBLE = 0x16, /* Latest tried RW firmware version too old */ VB2_RECOVERY_FW_ROLLBACK = 0x17, /* Latest tried RW firmware body verification failed */ VB2_RECOVERY_FW_BODY = 0x1b, /* Highest reason for failed RW firmware signature check */ VB2_RECOVERY_RO_INVALID_RW_CHECK_MAX = 0x1f, /* * Firmware boot failure outside of verified boot (RAM init, missing * SSD, etc.). */ VB2_RECOVERY_RO_FIRMWARE = 0x20, /* * Recovery mode TPM initialization requires a system reboot. The * system was already in recovery mode for some other reason when this * happened. */ VB2_RECOVERY_RO_TPM_REBOOT = 0x21, /* EC software sync - other error */ VB2_RECOVERY_EC_SOFTWARE_SYNC = 0x22, /* EC software sync - unable to determine active EC image */ VB2_RECOVERY_EC_UNKNOWN_IMAGE = 0x23, /* EC software sync - error obtaining EC image hash (deprecated) */ VB2_RECOVERY_DEP_EC_HASH = 0x24, /* EC software sync - error obtaining expected EC image */ VB2_RECOVERY_EC_EXPECTED_IMAGE = 0x25, /* EC software sync - error updating EC */ VB2_RECOVERY_EC_UPDATE = 0x26, /* EC software sync - unable to jump to EC-RW */ VB2_RECOVERY_EC_JUMP_RW = 0x27, /* EC software sync - unable to protect / unprotect EC-RW */ VB2_RECOVERY_EC_PROTECT = 0x28, /* EC software sync - error obtaining expected EC hash */ VB2_RECOVERY_EC_EXPECTED_HASH = 0x29, /* EC software sync - expected EC image doesn't match hash */ VB2_RECOVERY_EC_HASH_MISMATCH = 0x2a, /* New error codes from VB2 */ /* TODO: may need to add strings for these in the original fwlib */ /* Secure data inititalization error */ VB2_RECOVERY_SECDATA_INIT = 0x2b, /* GBB header is bad */ VB2_RECOVERY_GBB_HEADER = 0x2c, /* Unable to clear TPM owner */ VB2_RECOVERY_TPM_CLEAR_OWNER = 0x2d, /* Error determining/updating virtual dev switch */ VB2_RECOVERY_DEV_SWITCH = 0x2e, /* Error determining firmware slot */ VB2_RECOVERY_FW_SLOT = 0x2f, /* Error updating AUX firmware */ VB2_RECOVERY_AUX_FW_UPDATE = 0x30, /* Unspecified/unknown error in read-only firmware */ VB2_RECOVERY_RO_UNSPECIFIED = 0x3f, /* * User manually requested recovery by pressing a key at developer * warning screen */ VB2_RECOVERY_RW_DEV_SCREEN = 0x41, /* No OS kernel detected */ VB2_RECOVERY_RW_NO_OS = 0x42, /* OS kernel failed signature check */ VB2_RECOVERY_RW_INVALID_OS = 0x43, /* TPM error in rewritable firmware (deprecated) */ VB2_RECOVERY_DEP_RW_TPM_ERROR = 0x44, /* RW firmware in dev mode, but dev switch is off */ VB2_RECOVERY_RW_DEV_MISMATCH = 0x45, /* Shared data error in rewritable firmware */ VB2_RECOVERY_RW_SHARED_DATA = 0x46, /* Test error from LoadKernel() */ VB2_RECOVERY_RW_TEST_LK = 0x47, /* No bootable disk found (deprecated)*/ VB2_RECOVERY_DEP_RW_NO_DISK = 0x48, /* Rebooting did not correct TPM_E_FAIL or TPM_E_FAILEDSELFTEST */ VB2_RECOVERY_TPM_E_FAIL = 0x49, /* TPM setup error in read-only firmware */ VB2_RECOVERY_RO_TPM_S_ERROR = 0x50, /* TPM write error in read-only firmware */ VB2_RECOVERY_RO_TPM_W_ERROR = 0x51, /* TPM lock error in read-only firmware */ VB2_RECOVERY_RO_TPM_L_ERROR = 0x52, /* TPM update error in read-only firmware */ VB2_RECOVERY_RO_TPM_U_ERROR = 0x53, /* TPM read error in rewritable firmware */ VB2_RECOVERY_RW_TPM_R_ERROR = 0x54, /* TPM write error in rewritable firmware */ VB2_RECOVERY_RW_TPM_W_ERROR = 0x55, /* TPM lock error in rewritable firmware */ VB2_RECOVERY_RW_TPM_L_ERROR = 0x56, /* EC software sync unable to get EC image hash */ VB2_RECOVERY_EC_HASH_FAILED = 0x57, /* EC software sync invalid image hash size */ VB2_RECOVERY_EC_HASH_SIZE = 0x58, /* Unspecified error while trying to load kernel */ VB2_RECOVERY_LK_UNSPECIFIED = 0x59, /* No bootable storage device in system */ VB2_RECOVERY_RW_NO_DISK = 0x5a, /* No bootable kernel found on disk */ VB2_RECOVERY_RW_NO_KERNEL = 0x5b, /* BCB related error in RW firmware */ VB2_RECOVERY_RW_BCB_ERROR = 0x5c, /* New error codes from VB2 */ /* TODO: may need to add strings for these in the original fwlib */ /* Secure data inititalization error */ VB2_RECOVERY_SECDATAK_INIT = 0x5d, /* Fastboot mode requested in firmware */ VB2_RECOVERY_FW_FASTBOOT = 0x5e, /* Recovery hash space lock error in RO firmware */ VB2_RECOVERY_RO_TPM_REC_HASH_L_ERROR = 0x5f, /* Failed to disable the TPM [prior to running untrusted code] */ VB2_RECOVERY_TPM_DISABLE_FAILED = 0x60, /* Alt FW Failed hash verification */ VB2_RECOVERY_ALTFW_HASH_FAILED = 0x61, /* Unspecified/unknown error in rewritable firmware */ VB2_RECOVERY_RW_UNSPECIFIED = 0x7f, /* DM-verity error */ VB2_RECOVERY_KE_DM_VERITY = 0x81, /* Unspecified/unknown error in kernel */ VB2_RECOVERY_KE_UNSPECIFIED = 0xbf, /* Recovery mode test from user-mode */ VB2_RECOVERY_US_TEST = 0xc1, /* Recovery requested by user-mode via BCB */ VB2_RECOVERY_BCB_USER_MODE = 0xc2, /* Fastboot mode requested by user-mode */ VB2_RECOVERY_US_FASTBOOT = 0xc3, /* User requested recovery for training memory and rebooting. */ VB2_RECOVERY_TRAIN_AND_REBOOT = 0xc4, /* Unspecified/unknown error in user-mode */ VB2_RECOVERY_US_UNSPECIFIED = 0xff, }; #endif /* VBOOT_REFERENCE_2RECOVERY_REASONS_H_ */