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