Home | History | Annotate | Download | only in include
      1 /* Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
      2  * Use of this source code is governed by a BSD-style license that can be
      3  * found in the LICENSE file.
      4  *
      5  * Recovery reasons
      6  */
      7 
      8 #ifndef VBOOT_REFERENCE_VBOOT_2RECOVERY_REASONS_H_
      9 #define VBOOT_REFERENCE_VBOOT_2RECOVERY_REASONS_H_
     10 
     11 /* Recovery reason codes */
     12 enum vb2_nv_recovery {
     13 	/* Recovery not requested. */
     14 	VB2_RECOVERY_NOT_REQUESTED = 0x00,
     15 
     16 	/*
     17 	 * Recovery requested from legacy utility.  (Prior to the NV storage
     18 	 * spec, recovery mode was a single bitfield; this value is reserved so
     19 	 * that scripts which wrote 1 to the recovery field are distinguishable
     20 	 * from scripts whch use the recovery reasons listed here.
     21 	 */
     22 	VB2_RECOVERY_LEGACY = 0x01,
     23 
     24 	/* User manually requested recovery via recovery button */
     25 	VB2_RECOVERY_RO_MANUAL = 0x02,
     26 
     27 	/*
     28 	 * RW firmware failed signature check (neither RW firmware slot was
     29 	 * valid)
     30 	 */
     31 	VB2_RECOVERY_RO_INVALID_RW = 0x03,
     32 
     33 	/* S3 resume failed */
     34 	VB2_RECOVERY_RO_S3_RESUME = 0x04,
     35 
     36 	/* TPM error in read-only firmware (deprecated) */
     37 	VB2_RECOVERY_DEP_RO_TPM_ERROR = 0x05,
     38 
     39 	/* Shared data error in read-only firmware */
     40 	VB2_RECOVERY_RO_SHARED_DATA = 0x06,
     41 
     42 	/* Test error from S3Resume() */
     43 	VB2_RECOVERY_RO_TEST_S3 = 0x07,
     44 
     45 	/* Test error from LoadFirmwareSetup() (deprecated) */
     46 	VB2_RECOVERY_RO_TEST_LFS = 0x08,
     47 
     48 	/* Test error from LoadFirmware() (deprecated) */
     49 	VB2_RECOVERY_RO_TEST_LF = 0x09,
     50 
     51 	/* Latest tried RW firmware keyblock verification failed */
     52 	VB2_RECOVERY_FW_KEYBLOCK = 0x13,
     53 
     54 	/* Latest tried RW firmware key version too old */
     55 	VB2_RECOVERY_FW_KEY_ROLLBACK = 0x14,
     56 
     57 	/* Latest tried RW firmware preamble verification failed */
     58 	VB2_RECOVERY_FW_PREAMBLE = 0x16,
     59 
     60 	/* Latest tried RW firmware version too old */
     61 	VB2_RECOVERY_FW_ROLLBACK = 0x17,
     62 
     63 	/* Latest tried RW firmware body verification failed */
     64 	VB2_RECOVERY_FW_BODY = 0x1b,
     65 
     66 	/*
     67 	 * Firmware boot failure outside of verified boot (RAM init, missing
     68 	 * SSD, etc.).
     69 	 */
     70 	VB2_RECOVERY_RO_FIRMWARE = 0x20,
     71 
     72 	/*
     73 	 * Recovery mode TPM initialization requires a system reboot.  The
     74 	 * system was already in recovery mode for some other reason when this
     75 	 * happened.
     76 	 */
     77 	VB2_RECOVERY_RO_TPM_REBOOT = 0x21,
     78 
     79 	/* EC software sync - other error */
     80 	VB2_RECOVERY_EC_SOFTWARE_SYNC = 0x22,
     81 
     82 	/* EC software sync - unable to determine active EC image */
     83 	VB2_RECOVERY_EC_UNKNOWN_IMAGE = 0x23,
     84 
     85 	/* EC software sync - error obtaining EC image hash (deprecated) */
     86 	VB2_RECOVERY_DEP_EC_HASH = 0x24,
     87 
     88 	/* EC software sync - error obtaining expected EC image */
     89 	VB2_RECOVERY_EC_EXPECTED_IMAGE = 0x25,
     90 
     91 	/* EC software sync - error updating EC */
     92 	VB2_RECOVERY_EC_UPDATE = 0x26,
     93 
     94 	/* EC software sync - unable to jump to EC-RW */
     95 	VB2_RECOVERY_EC_JUMP_RW = 0x27,
     96 
     97 	/* EC software sync - unable to protect / unprotect EC-RW */
     98 	VB2_RECOVERY_EC_PROTECT = 0x28,
     99 
    100 	/* EC software sync - error obtaining expected EC hash */
    101 	VB2_RECOVERY_EC_EXPECTED_HASH = 0x29,
    102 
    103 	/* EC software sync - expected EC image doesn't match hash */
    104 	VB2_RECOVERY_EC_HASH_MISMATCH = 0x2a,
    105 
    106 	/* New error codes from VB2 */
    107 	// TODO: may need to add strings for these in the original fwlib
    108 
    109 	/* Secure data inititalization error */
    110 	VB2_RECOVERY_SECDATA_INIT = 0x2b,
    111 
    112 	/* GBB header is bad */
    113 	VB2_RECOVERY_GBB_HEADER = 0x2c,
    114 
    115 	/* Unable to clear TPM owner */
    116 	VB2_RECOVERY_TPM_CLEAR_OWNER = 0x2d,
    117 
    118 	/* Error determining/updating virtual dev switch */
    119 	VB2_RECOVERY_DEV_SWITCH = 0x2e,
    120 
    121 	/* Error determining firmware slot */
    122 	VB2_RECOVERY_FW_SLOT = 0x2f,
    123 
    124 	/* Unspecified/unknown error in read-only firmware */
    125 	VB2_RECOVERY_RO_UNSPECIFIED = 0x3f,
    126 
    127 	/*
    128 	 * User manually requested recovery by pressing a key at developer
    129 	 * warning screen
    130 	 */
    131 	VB2_RECOVERY_RW_DEV_SCREEN = 0x41,
    132 
    133 	/* No OS kernel detected */
    134 	VB2_RECOVERY_RW_NO_OS = 0x42,
    135 
    136 	/* OS kernel failed signature check */
    137 	VB2_RECOVERY_RW_INVALID_OS = 0x43,
    138 
    139 	/* TPM error in rewritable firmware (deprecated) */
    140 	VB2_RECOVERY_DEP_RW_TPM_ERROR = 0x44,
    141 
    142 	/* RW firmware in dev mode, but dev switch is off */
    143 	VB2_RECOVERY_RW_DEV_MISMATCH = 0x45,
    144 
    145 	/* Shared data error in rewritable firmware */
    146 	VB2_RECOVERY_RW_SHARED_DATA = 0x46,
    147 
    148 	/* Test error from LoadKernel() */
    149 	VB2_RECOVERY_RW_TEST_LK = 0x47,
    150 
    151 	/* No bootable disk found (deprecated)*/
    152 	VB2_RECOVERY_DEP_RW_NO_DISK = 0x48,
    153 
    154 	/* Rebooting did not correct TPM_E_FAIL or TPM_E_FAILEDSELFTEST  */
    155 	VB2_RECOVERY_TPM_E_FAIL = 0x49,
    156 
    157 	/* TPM setup error in read-only firmware */
    158 	VB2_RECOVERY_RO_TPM_S_ERROR = 0x50,
    159 
    160 	/* TPM write error in read-only firmware */
    161 	VB2_RECOVERY_RO_TPM_W_ERROR = 0x51,
    162 
    163 	/* TPM lock error in read-only firmware */
    164 	VB2_RECOVERY_RO_TPM_L_ERROR = 0x52,
    165 
    166 	/* TPM update error in read-only firmware */
    167 	VB2_RECOVERY_RO_TPM_U_ERROR = 0x53,
    168 
    169 	/* TPM read error in rewritable firmware */
    170 	VB2_RECOVERY_RW_TPM_R_ERROR = 0x54,
    171 
    172 	/* TPM write error in rewritable firmware */
    173 	VB2_RECOVERY_RW_TPM_W_ERROR = 0x55,
    174 
    175 	/* TPM lock error in rewritable firmware */
    176 	VB2_RECOVERY_RW_TPM_L_ERROR = 0x56,
    177 
    178 	/* EC software sync unable to get EC image hash */
    179 	VB2_RECOVERY_EC_HASH_FAILED = 0x57,
    180 
    181 	/* EC software sync invalid image hash size */
    182 	VB2_RECOVERY_EC_HASH_SIZE    = 0x58,
    183 
    184 	/* Unspecified error while trying to load kernel */
    185 	VB2_RECOVERY_LK_UNSPECIFIED  = 0x59,
    186 
    187 	/* No bootable storage device in system */
    188 	VB2_RECOVERY_RW_NO_DISK      = 0x5a,
    189 
    190 	/* No bootable kernel found on disk */
    191 	VB2_RECOVERY_RW_NO_KERNEL    = 0x5b,
    192 
    193 	/* Unspecified/unknown error in rewritable firmware */
    194 	VB2_RECOVERY_RW_UNSPECIFIED  = 0x7f,
    195 
    196 	/* DM-verity error */
    197 	VB2_RECOVERY_KE_DM_VERITY    = 0x81,
    198 
    199 	/* Unspecified/unknown error in kernel */
    200 	VB2_RECOVERY_KE_UNSPECIFIED  = 0xbf,
    201 
    202 	/* Recovery mode test from user-mode */
    203 	VB2_RECOVERY_US_TEST         = 0xc1,
    204 
    205 	/* Unspecified/unknown error in user-mode */
    206 	VB2_RECOVERY_US_UNSPECIFIED  = 0xff,
    207 };
    208 
    209 #endif  /* VBOOT_REFERENCE_VBOOT_2RECOVERY_REASONS_H_ */
    210