OLD | NEW |
1 /* Copyright (c) 2011 The Chromium OS Authors. All rights reserved. | 1 /* Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
2 * Use of this source code is governed by a BSD-style license that can be | 2 * Use of this source code is governed by a BSD-style license that can be |
3 * found in the LICENSE file. | 3 * found in the LICENSE file. |
4 */ | 4 */ |
5 | 5 |
6 /* Non-volatile storage routines for verified boot. | 6 /* Non-volatile storage routines for verified boot. |
7 */ | 7 */ |
8 | 8 |
9 #ifndef VBOOT_REFERENCE_NVSTORAGE_H_ | 9 #ifndef VBOOT_REFERENCE_NVSTORAGE_H_ |
10 #define VBOOT_REFERENCE_NVSTORAGE_H_ | 10 #define VBOOT_REFERENCE_NVSTORAGE_H_ |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 VBNV_LOCALIZATION_INDEX, | 47 VBNV_LOCALIZATION_INDEX, |
48 /* Field reserved for kernel/user-mode use; 32-bit value. */ | 48 /* Field reserved for kernel/user-mode use; 32-bit value. */ |
49 VBNV_KERNEL_FIELD, | 49 VBNV_KERNEL_FIELD, |
50 /* Firmware checked RW slot B before slot A on the current boot because | 50 /* Firmware checked RW slot B before slot A on the current boot because |
51 * VBNV_TRY_B_COUNT was non-zero at that time. 0=no; 1=yes. */ | 51 * VBNV_TRY_B_COUNT was non-zero at that time. 0=no; 1=yes. */ |
52 VBNV_TRIED_FIRMWARE_B, | 52 VBNV_TRIED_FIRMWARE_B, |
53 /* Firmware verified the kernel key block signature using the key stored | 53 /* Firmware verified the kernel key block signature using the key stored |
54 * in the firmware. 0=no, just used the key block hash; 1=yes, used the | 54 * in the firmware. 0=no, just used the key block hash; 1=yes, used the |
55 * key block signature. */ | 55 * key block signature. */ |
56 VBNV_FW_VERIFIED_KERNEL_KEY, | 56 VBNV_FW_VERIFIED_KERNEL_KEY, |
| 57 /* Verified boot API function which should generate a test error, if |
| 58 * error number (below) is non-zero. */ |
| 59 VBNV_TEST_ERROR_FUNC, |
| 60 /* Verified boot API error to generate for the function, if non-zero. */ |
| 61 VBNV_TEST_ERROR_NUM, |
57 } VbNvParam; | 62 } VbNvParam; |
58 | 63 |
59 | 64 |
60 /* Recovery reason codes for VBNV_RECOVERY_REQUEST */ | 65 /* Recovery reason codes for VBNV_RECOVERY_REQUEST */ |
61 /* Recovery not requested. */ | 66 /* Recovery not requested. */ |
62 #define VBNV_RECOVERY_NOT_REQUESTED 0x00 | 67 #define VBNV_RECOVERY_NOT_REQUESTED 0x00 |
63 /* Recovery requested from legacy utility. (Prior to the NV storage | 68 /* Recovery requested from legacy utility. (Prior to the NV storage |
64 * spec, recovery mode was a single bitfield; this value is reserved | 69 * spec, recovery mode was a single bitfield; this value is reserved |
65 * so that scripts which wrote 1 to the recovery field are | 70 * so that scripts which wrote 1 to the recovery field are |
66 * distinguishable from scripts whch use the recovery reasons listed | 71 * distinguishable from scripts whch use the recovery reasons listed |
67 * here. */ | 72 * here. */ |
68 #define VBNV_RECOVERY_LEGACY 0x01 | 73 #define VBNV_RECOVERY_LEGACY 0x01 |
69 /* User manually requested recovery via recovery button */ | 74 /* User manually requested recovery via recovery button */ |
70 #define VBNV_RECOVERY_RO_MANUAL 0x02 | 75 #define VBNV_RECOVERY_RO_MANUAL 0x02 |
71 /* RW firmware failed signature check (neither RW firmware slot was valid) */ | 76 /* RW firmware failed signature check (neither RW firmware slot was valid) */ |
72 #define VBNV_RECOVERY_RO_INVALID_RW 0x03 | 77 #define VBNV_RECOVERY_RO_INVALID_RW 0x03 |
73 /* S3 resume failed */ | 78 /* S3 resume failed */ |
74 #define VBNV_RECOVERY_RO_S3_RESUME 0x04 | 79 #define VBNV_RECOVERY_RO_S3_RESUME 0x04 |
75 /* TPM error in read-only firmware */ | 80 /* TPM error in read-only firmware */ |
76 #define VBNV_RECOVERY_RO_TPM_ERROR 0x05 | 81 #define VBNV_RECOVERY_RO_TPM_ERROR 0x05 |
77 /* Shared data error in read-only firmware */ | 82 /* Shared data error in read-only firmware */ |
78 #define VBNV_RECOVERY_RO_SHARED_DATA 0x06 | 83 #define VBNV_RECOVERY_RO_SHARED_DATA 0x06 |
| 84 /* Test error from S3Resume() */ |
| 85 #define VBNV_RECOVERY_RO_TEST_S3 0x07 |
| 86 /* Test error from LoadFirmwareSetup() */ |
| 87 #define VBNV_RECOVERY_RO_TEST_LFS 0x08 |
| 88 /* Test error from LoadFirmware() */ |
| 89 #define VBNV_RECOVERY_RO_TEST_LF 0x09 |
79 /* Unspecified/unknown error in read-only firmware */ | 90 /* Unspecified/unknown error in read-only firmware */ |
80 #define VBNV_RECOVERY_RO_UNSPECIFIED 0x3F | 91 #define VBNV_RECOVERY_RO_UNSPECIFIED 0x3F |
81 /* User manually requested recovery by pressing a key at developer | 92 /* User manually requested recovery by pressing a key at developer |
82 * warning screen */ | 93 * warning screen */ |
83 #define VBNV_RECOVERY_RW_DEV_SCREEN 0x41 | 94 #define VBNV_RECOVERY_RW_DEV_SCREEN 0x41 |
84 /* No OS kernel detected */ | 95 /* No OS kernel detected */ |
85 #define VBNV_RECOVERY_RW_NO_OS 0x42 | 96 #define VBNV_RECOVERY_RW_NO_OS 0x42 |
86 /* OS kernel failed signature check */ | 97 /* OS kernel failed signature check */ |
87 #define VBNV_RECOVERY_RW_INVALID_OS 0x43 | 98 #define VBNV_RECOVERY_RW_INVALID_OS 0x43 |
88 /* TPM error in rewritable firmware */ | 99 /* TPM error in rewritable firmware */ |
89 #define VBNV_RECOVERY_RW_TPM_ERROR 0x44 | 100 #define VBNV_RECOVERY_RW_TPM_ERROR 0x44 |
90 /* RW firmware in dev mode, but dev switch is off */ | 101 /* RW firmware in dev mode, but dev switch is off */ |
91 #define VBNV_RECOVERY_RW_DEV_MISMATCH 0x45 | 102 #define VBNV_RECOVERY_RW_DEV_MISMATCH 0x45 |
92 /* Shared data error in rewritable firmware */ | 103 /* Shared data error in rewritable firmware */ |
93 #define VBNV_RECOVERY_RW_SHARED_DATA 0x46 | 104 #define VBNV_RECOVERY_RW_SHARED_DATA 0x46 |
| 105 /* Test error from LoadKernel() */ |
| 106 #define VBNV_RECOVERY_RW_TEST_LK 0x47 |
94 /* Unspecified/unknown error in rewritable firmware */ | 107 /* Unspecified/unknown error in rewritable firmware */ |
95 #define VBNV_RECOVERY_RW_UNSPECIFIED 0x7F | 108 #define VBNV_RECOVERY_RW_UNSPECIFIED 0x7F |
96 /* DM-verity error */ | 109 /* DM-verity error */ |
97 #define VBNV_RECOVERY_KE_DM_VERITY 0x81 | 110 #define VBNV_RECOVERY_KE_DM_VERITY 0x81 |
98 /* Unspecified/unknown error in kernel */ | 111 /* Unspecified/unknown error in kernel */ |
99 #define VBNV_RECOVERY_KE_UNSPECIFIED 0xBF | 112 #define VBNV_RECOVERY_KE_UNSPECIFIED 0xBF |
100 /* Recovery mode test from user-mode */ | 113 /* Recovery mode test from user-mode */ |
101 #define VBNV_RECOVERY_US_TEST 0xC1 | 114 #define VBNV_RECOVERY_US_TEST 0xC1 |
102 /* Unspecified/unknown error in user-mode */ | 115 /* Unspecified/unknown error in user-mode */ |
103 #define VBNV_RECOVERY_US_UNSPECIFIED 0xFF | 116 #define VBNV_RECOVERY_US_UNSPECIFIED 0xFF |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 int VbNvGet(VbNvContext* context, VbNvParam param, uint32_t* dest); | 154 int VbNvGet(VbNvContext* context, VbNvParam param, uint32_t* dest); |
142 | 155 |
143 /* Set a NV storage param to a new value. Returns 0 if success, | 156 /* Set a NV storage param to a new value. Returns 0 if success, |
144 * non-zero if error. | 157 * non-zero if error. |
145 * | 158 * |
146 * This may only be called between VbNvSetup() and VbNvTeardown(). */ | 159 * This may only be called between VbNvSetup() and VbNvTeardown(). */ |
147 int VbNvSet(VbNvContext* context, VbNvParam param, uint32_t value); | 160 int VbNvSet(VbNvContext* context, VbNvParam param, uint32_t value); |
148 | 161 |
149 | 162 |
150 #endif /* VBOOT_REFERENCE_NVSTORAGE_H_ */ | 163 #endif /* VBOOT_REFERENCE_NVSTORAGE_H_ */ |
OLD | NEW |