diff options
author | Randall Spangler <rspangler@chromium.org> | 2014-06-24 13:11:02 -0700 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-06-25 01:32:33 +0000 |
commit | 8de992c441e36453a5a08bcf7c2462835007f81e (patch) | |
tree | 375fa264bd1b48cd3bd45cfd4da69a5519af9f4a | |
parent | fc17308c39d23fe64959854dc5a858429b37539f (diff) | |
download | vboot-8de992c441e36453a5a08bcf7c2462835007f81e.tar.gz |
vboot2: fix overloaded NV bit
Bill and I both added meanings for byte 1 bit 0x10. His changed
(NV_BOOT_BACKUP_NVRAM) landed first, so move the vboot2 bit to byte 2.
BUG=chromium:370082
BRANCH=none
TEST=make clean && VBOOT2=1 make runtests
Change-Id: Ib7ff8da47d03f91cbeb729ca517c6315dfb4e6ac
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/205408
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
-rw-r--r-- | firmware/2lib/2nvstorage.c | 16 | ||||
-rw-r--r-- | firmware/2lib/include/2nvstorage.h | 2 | ||||
-rw-r--r-- | tests/vb2_nvstorage_tests.c | 1 |
3 files changed, 15 insertions, 4 deletions
diff --git a/firmware/2lib/2nvstorage.c b/firmware/2lib/2nvstorage.c index be635825..067f0aef 100644 --- a/firmware/2lib/2nvstorage.c +++ b/firmware/2lib/2nvstorage.c @@ -40,14 +40,15 @@ enum vb2_nv_offset { /* Fields in VB2_NV_OFFS_BOOT */ #define VB2_NV_BOOT_TRY_COUNT_MASK 0x0f -#define VB2_NV_BOOT_TRY_NEXT 0x10 +#define VB2_NV_BOOT_BACKUP_NVRAM 0x10 #define VB2_NV_BOOT_OPROM_NEEDED 0x20 #define VB2_NV_BOOT_DISABLE_DEV 0x40 #define VB2_NV_BOOT_DEBUG_RESET 0x80 -/* Fields in VB2_NV_OFFS_BOOT2 (unused = 0xf8) */ +/* Fields in VB2_NV_OFFS_BOOT2 (unused = 0xf0) */ #define VB2_NV_BOOT2_RESULT_MASK 0x03 #define VB2_NV_BOOT2_TRIED 0x04 +#define VB2_NV_BOOT2_TRY_NEXT 0x08 /* Fields in VB2_NV_OFFS_DEV (unused = 0xf8) */ #define VB2_NV_DEV_FLAG_USB 0x01 @@ -139,7 +140,7 @@ uint32_t vb2_nv_get(struct vb2_context *ctx, enum vb2_nv_param param) return GETBIT(VB2_NV_OFFS_BOOT, VB2_NV_BOOT_DEBUG_RESET); case VB2_NV_TRY_NEXT: - return GETBIT(VB2_NV_OFFS_BOOT, VB2_NV_BOOT_TRY_NEXT); + return GETBIT(VB2_NV_OFFS_BOOT2, VB2_NV_BOOT2_TRY_NEXT); case VB2_NV_TRY_COUNT: return p[VB2_NV_OFFS_BOOT] & VB2_NV_BOOT_TRY_COUNT_MASK; @@ -180,6 +181,9 @@ uint32_t vb2_nv_get(struct vb2_context *ctx, enum vb2_nv_param param) case VB2_NV_OPROM_NEEDED: return GETBIT(VB2_NV_OFFS_BOOT, VB2_NV_BOOT_OPROM_NEEDED); + case VB2_NV_BACKUP_NVRAM_REQUEST: + return GETBIT(VB2_NV_OFFS_BOOT, VB2_NV_BOOT_BACKUP_NVRAM); + case VB2_NV_CLEAR_TPM_OWNER_REQUEST: return GETBIT(VB2_NV_OFFS_TPM, VB2_NV_TPM_CLEAR_OWNER_REQUEST); @@ -228,7 +232,7 @@ void vb2_nv_set(struct vb2_context *ctx, break; case VB2_NV_TRY_NEXT: - SETBIT(VB2_NV_OFFS_BOOT, VB2_NV_BOOT_TRY_NEXT); + SETBIT(VB2_NV_OFFS_BOOT2, VB2_NV_BOOT2_TRY_NEXT); break; case VB2_NV_TRY_COUNT: @@ -302,6 +306,10 @@ void vb2_nv_set(struct vb2_context *ctx, SETBIT(VB2_NV_OFFS_BOOT, VB2_NV_BOOT_OPROM_NEEDED); break; + case VB2_NV_BACKUP_NVRAM_REQUEST: + SETBIT(VB2_NV_OFFS_BOOT, VB2_NV_BOOT_BACKUP_NVRAM); + break; + case VB2_NV_CLEAR_TPM_OWNER_REQUEST: SETBIT(VB2_NV_OFFS_TPM, VB2_NV_TPM_CLEAR_OWNER_REQUEST); break; diff --git a/firmware/2lib/include/2nvstorage.h b/firmware/2lib/include/2nvstorage.h index ec775699..11a77966 100644 --- a/firmware/2lib/include/2nvstorage.h +++ b/firmware/2lib/include/2nvstorage.h @@ -68,6 +68,8 @@ enum vb2_nv_param { VB2_NV_CLEAR_TPM_OWNER_DONE, /* More details on recovery reason */ VB2_NV_RECOVERY_SUBCODE, + /* Request that NVRAM be backed up at next boot if possible. */ + VB2_NV_BACKUP_NVRAM_REQUEST, /* Firmware slot tried this boot (0=A, 1=B) */ VB2_NV_FW_TRIED, /* Result of trying that firmware (see vb2_fw_result) */ diff --git a/tests/vb2_nvstorage_tests.c b/tests/vb2_nvstorage_tests.c index 88ffe477..b648ca95 100644 --- a/tests/vb2_nvstorage_tests.c +++ b/tests/vb2_nvstorage_tests.c @@ -45,6 +45,7 @@ static struct nv_field nvfields[] = { {VB2_NV_CLEAR_TPM_OWNER_REQUEST, 0, 1, 0, "clear tpm owner request"}, {VB2_NV_CLEAR_TPM_OWNER_DONE, 0, 1, 0, "clear tpm owner done"}, {VB2_NV_OPROM_NEEDED, 0, 1, 0, "oprom needed"}, + {VB2_NV_BACKUP_NVRAM_REQUEST, 0, 1, 0, "backup nvram request"}, {0, 0, 0, 0, NULL} }; |