Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(57)

Side by Side Diff: firmware/include/vboot_nvstorage.h

Issue 6719005: Cherry-pick vboot_reference files from TOT to support crossystem (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/vboot_reference.git@0.11.257.B
Patch Set: Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « firmware/include/utility.h ('k') | firmware/include/vboot_struct.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 29 matching lines...) Expand all
40 * Valid range: 0-15. */ 40 * Valid range: 0-15. */
41 VBNV_TRY_B_COUNT, 41 VBNV_TRY_B_COUNT,
42 /* Request recovery mode on next boot; see VBNB_RECOVERY_* below for 42 /* Request recovery mode on next boot; see VBNB_RECOVERY_* below for
43 * currently defined reason codes. 8-bit value. */ 43 * currently defined reason codes. 8-bit value. */
44 VBNV_RECOVERY_REQUEST, 44 VBNV_RECOVERY_REQUEST,
45 /* Localization index for screen bitmaps displayed by firmware. 45 /* Localization index for screen bitmaps displayed by firmware.
46 * 8-bit value. */ 46 * 8-bit value. */
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 /* Verified boot API function which should generate a test error, if
51 * VBNV_TRY_B_COUNT was non-zero at that time. 0=no; 1=yes. */ 51 * error number (below) is non-zero. */
52 VBNV_TRIED_FIRMWARE_B, 52 VBNV_TEST_ERROR_FUNC,
53 /* Firmware verified the kernel key block signature using the key stored 53 /* Verified boot API error to generate for the function, if non-zero. */
54 * in the firmware. 0=no, just used the key block hash; 1=yes, used the 54 VBNV_TEST_ERROR_NUM,
55 * key block signature. */
56 VBNV_FW_VERIFIED_KERNEL_KEY,
57 } VbNvParam; 55 } VbNvParam;
58 56
59 57
60 /* Recovery reason codes for VBNV_RECOVERY_REQUEST */ 58 /* Recovery reason codes for VBNV_RECOVERY_REQUEST */
61 /* Recovery not requested. */ 59 /* Recovery not requested. */
62 #define VBNV_RECOVERY_NOT_REQUESTED 0x00 60 #define VBNV_RECOVERY_NOT_REQUESTED 0x00
63 /* Recovery requested from legacy utility. (Prior to the NV storage 61 /* Recovery requested from legacy utility. (Prior to the NV storage
64 * spec, recovery mode was a single bitfield; this value is reserved 62 * spec, recovery mode was a single bitfield; this value is reserved
65 * so that scripts which wrote 1 to the recovery field are 63 * so that scripts which wrote 1 to the recovery field are
66 * distinguishable from scripts whch use the recovery reasons listed 64 * distinguishable from scripts whch use the recovery reasons listed
67 * here. */ 65 * here. */
68 #define VBNV_RECOVERY_LEGACY 0x01 66 #define VBNV_RECOVERY_LEGACY 0x01
69 /* User manually requested recovery via recovery button */ 67 /* User manually requested recovery via recovery button */
70 #define VBNV_RECOVERY_RO_MANUAL 0x02 68 #define VBNV_RECOVERY_RO_MANUAL 0x02
71 /* RW firmware failed signature check (neither RW firmware slot was valid) */ 69 /* RW firmware failed signature check (neither RW firmware slot was valid) */
72 #define VBNV_RECOVERY_RO_INVALID_RW 0x03 70 #define VBNV_RECOVERY_RO_INVALID_RW 0x03
73 /* S3 resume failed */ 71 /* S3 resume failed */
74 #define VBNV_RECOVERY_RO_S3_RESUME 0x04 72 #define VBNV_RECOVERY_RO_S3_RESUME 0x04
75 /* TPM error in read-only firmware */ 73 /* TPM error in read-only firmware */
76 #define VBNV_RECOVERY_RO_TPM_ERROR 0x05 74 #define VBNV_RECOVERY_RO_TPM_ERROR 0x05
77 /* Shared data error in read-only firmware */ 75 /* Shared data error in read-only firmware */
78 #define VBNV_RECOVERY_RO_SHARED_DATA 0x06 76 #define VBNV_RECOVERY_RO_SHARED_DATA 0x06
77 /* Test error from S3Resume() */
78 #define VBNV_RECOVERY_RO_TEST_S3 0x07
79 /* Test error from LoadFirmwareSetup() */
80 #define VBNV_RECOVERY_RO_TEST_LFS 0x08
81 /* Test error from LoadFirmware() */
82 #define VBNV_RECOVERY_RO_TEST_LF 0x09
79 /* Unspecified/unknown error in read-only firmware */ 83 /* Unspecified/unknown error in read-only firmware */
80 #define VBNV_RECOVERY_RO_UNSPECIFIED 0x3F 84 #define VBNV_RECOVERY_RO_UNSPECIFIED 0x3F
81 /* User manually requested recovery by pressing a key at developer 85 /* User manually requested recovery by pressing a key at developer
82 * warning screen */ 86 * warning screen */
83 #define VBNV_RECOVERY_RW_DEV_SCREEN 0x41 87 #define VBNV_RECOVERY_RW_DEV_SCREEN 0x41
84 /* No OS kernel detected */ 88 /* No OS kernel detected */
85 #define VBNV_RECOVERY_RW_NO_OS 0x42 89 #define VBNV_RECOVERY_RW_NO_OS 0x42
86 /* OS kernel failed signature check */ 90 /* OS kernel failed signature check */
87 #define VBNV_RECOVERY_RW_INVALID_OS 0x43 91 #define VBNV_RECOVERY_RW_INVALID_OS 0x43
88 /* TPM error in rewritable firmware */ 92 /* TPM error in rewritable firmware */
89 #define VBNV_RECOVERY_RW_TPM_ERROR 0x44 93 #define VBNV_RECOVERY_RW_TPM_ERROR 0x44
90 /* RW firmware in dev mode, but dev switch is off */ 94 /* RW firmware in dev mode, but dev switch is off */
91 #define VBNV_RECOVERY_RW_DEV_MISMATCH 0x45 95 #define VBNV_RECOVERY_RW_DEV_MISMATCH 0x45
92 /* Shared data error in rewritable firmware */ 96 /* Shared data error in rewritable firmware */
93 #define VBNV_RECOVERY_RW_SHARED_DATA 0x46 97 #define VBNV_RECOVERY_RW_SHARED_DATA 0x46
98 /* Test error from LoadKernel() */
99 #define VBNV_RECOVERY_RW_TEST_LK 0x47
94 /* Unspecified/unknown error in rewritable firmware */ 100 /* Unspecified/unknown error in rewritable firmware */
95 #define VBNV_RECOVERY_RW_UNSPECIFIED 0x7F 101 #define VBNV_RECOVERY_RW_UNSPECIFIED 0x7F
96 /* DM-verity error */ 102 /* DM-verity error */
97 #define VBNV_RECOVERY_KE_DM_VERITY 0x81 103 #define VBNV_RECOVERY_KE_DM_VERITY 0x81
98 /* Unspecified/unknown error in kernel */ 104 /* Unspecified/unknown error in kernel */
99 #define VBNV_RECOVERY_KE_UNSPECIFIED 0xBF 105 #define VBNV_RECOVERY_KE_UNSPECIFIED 0xBF
100 /* Recovery mode test from user-mode */ 106 /* Recovery mode test from user-mode */
101 #define VBNV_RECOVERY_US_TEST 0xC1 107 #define VBNV_RECOVERY_US_TEST 0xC1
102 /* Unspecified/unknown error in user-mode */ 108 /* Unspecified/unknown error in user-mode */
103 #define VBNV_RECOVERY_US_UNSPECIFIED 0xFF 109 #define VBNV_RECOVERY_US_UNSPECIFIED 0xFF
104 110
105 111
112 /* Function codes for VBNV_TEST_ERROR_FUNC */
113 #define VBNV_TEST_ERROR_LOAD_FIRMWARE_SETUP 1
114 #define VBNV_TEST_ERROR_LOAD_FIRMWARE 2
115 #define VBNV_TEST_ERROR_LOAD_KERNEL 3
116 #define VBNV_TEST_ERROR_S3_RESUME 4
117
118
106 /* Initialize the NV storage library. This must be called before any 119 /* Initialize the NV storage library. This must be called before any
107 * other functions in this library. Returns 0 if success, non-zero if 120 * other functions in this library. Returns 0 if success, non-zero if
108 * error. 121 * error.
109 * 122 *
110 * Proper calling procedure: 123 * Proper calling procedure:
111 * 1) Allocate a context struct. 124 * 1) Allocate a context struct.
112 * 2) If multi-threaded/multi-process, acquire a lock to prevent 125 * 2) If multi-threaded/multi-process, acquire a lock to prevent
113 * other processes from modifying the underlying storage. 126 * other processes from modifying the underlying storage.
114 * 3) Read underlying storage and fill in context->raw. 127 * 3) Read underlying storage and fill in context->raw.
115 * 4) Call VbNvSetup(). 128 * 4) Call VbNvSetup().
(...skipping 25 matching lines...) Expand all
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_ */
OLDNEW
« no previous file with comments | « firmware/include/utility.h ('k') | firmware/include/vboot_struct.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698