diff options
author | Joel Kitching <kitching@google.com> | 2020-01-16 14:29:39 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-01-17 10:47:51 +0000 |
commit | 8d76529492a9a0aabe407f794a56b46b6c281020 (patch) | |
tree | cb4bbdf44ea203f55abe123657f3d9d83c123524 | |
parent | 700c0abc2dcbb2ffbb96809e36bd837e33c96974 (diff) | |
download | vboot-8d76529492a9a0aabe407f794a56b46b6c281020.tar.gz |
vboot: deprecate EC_EFS and EC_SYNC_SLOW flags
The vboot 1 flags are not used in userspace, so they may be
deprecated. The vboot 2 flags are converted to use compile-time
options instead.
BUG=b:124141368, chromium:1038259
TEST=make clean && make runtests
BRANCH=none
Change-Id: I0bd63a6f4dd0f29d416beacb966c99b16b5efabd
Signed-off-by: Joel Kitching <kitching@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2004256
Reviewed-by: Yu-Ping Wu <yupingso@chromium.org>
Commit-Queue: Joel Kitching <kitching@chromium.org>
Tested-by: Joel Kitching <kitching@chromium.org>
-rw-r--r-- | firmware/2lib/2ec_sync.c | 11 | ||||
-rw-r--r-- | firmware/2lib/include/2api.h | 8 | ||||
-rw-r--r-- | firmware/lib/vboot_api_kernel.c | 4 | ||||
-rw-r--r-- | tests/vb2_ec_sync_tests.c | 64 |
4 files changed, 40 insertions, 47 deletions
diff --git a/firmware/2lib/2ec_sync.c b/firmware/2lib/2ec_sync.c index 03948ea5..4fa0932c 100644 --- a/firmware/2lib/2ec_sync.c +++ b/firmware/2lib/2ec_sync.c @@ -221,10 +221,9 @@ static vb2_error_t check_ec_active(struct vb2_context *ctx) static vb2_error_t sync_ec(struct vb2_context *ctx) { struct vb2_shared_data *sd = vb2_get_sd(ctx); - int is_rw_ab = ctx->flags & VB2_CONTEXT_EC_EFS; vb2_error_t rv; - const enum vb2_firmware_selection select_rw = is_rw_ab ? + const enum vb2_firmware_selection select_rw = EC_EFS ? VB_SELECT_FIRMWARE_EC_UPDATE : VB_SELECT_FIRMWARE_EC_ACTIVE; VB2_DEBUG("select_rw=%d\n", select_rw); @@ -235,7 +234,7 @@ static vb2_error_t sync_ec(struct vb2_context *ctx) return VBERROR_EC_REBOOT_TO_RO_REQUIRED; /* Updated successfully. Cold reboot to switch to the new RW. * TODO: Switch slot and proceed if EC is still in RO. */ - if (is_rw_ab) { + if (EC_EFS) { VB2_DEBUG("Rebooting to jump to new EC-RW\n"); return VBERROR_EC_REBOOT_TO_SWITCH_RW; } @@ -362,8 +361,7 @@ static vb2_error_t ec_sync_phase1(struct vb2_context *ctx) * to jump to the new RW version later. */ if ((sd->flags & VB2_SD_FLAG_ECSYNC_EC_RW) && - (sd->flags & VB2_SD_FLAG_ECSYNC_EC_IN_RW) && - !(ctx->flags & VB2_CONTEXT_EC_EFS)) { + (sd->flags & VB2_SD_FLAG_ECSYNC_EC_IN_RW) && !EC_EFS) { return VBERROR_EC_REBOOT_TO_RO_REQUIRED; } @@ -385,8 +383,7 @@ static int ec_will_update_slowly(struct vb2_context *ctx) struct vb2_shared_data *sd = vb2_get_sd(ctx); return (((sd->flags & VB2_SD_FLAG_ECSYNC_EC_RO) || - (sd->flags & VB2_SD_FLAG_ECSYNC_EC_RW)) && - (ctx->flags & VB2_CONTEXT_EC_SYNC_SLOW)); + (sd->flags & VB2_SD_FLAG_ECSYNC_EC_RW)) && EC_SLOW_UPDATE); } /** diff --git a/firmware/2lib/include/2api.h b/firmware/2lib/include/2api.h index 3b3fd8d1..52e5a4a6 100644 --- a/firmware/2lib/include/2api.h +++ b/firmware/2lib/include/2api.h @@ -139,16 +139,16 @@ enum vb2_context_flags { /* * EC software sync is slow to update; warning screen should be * displayed. Caller may set this flag at any time before calling - * VbSelectAndLoadKernel(). + * VbSelectAndLoadKernel(). Deprecated as part of chromium:1038259. */ - VB2_CONTEXT_EC_SYNC_SLOW = (1 << 16), + VB2_CONTEXT_DEPRECATED_EC_SYNC_SLOW = (1 << 16), /* * EC firmware supports early firmware selection; two EC images exist, * and EC may have already verified and jumped to EC-RW prior to EC - * software sync. + * software sync. Deprecated as part of chromium:1038259. */ - VB2_CONTEXT_EC_EFS = (1 << 17), + VB2_CONTEXT_DEPRECATED_EC_EFS = (1 << 17), /* * NV storage uses data format V2. Data is size VB2_NVDATA_SIZE_V2, diff --git a/firmware/lib/vboot_api_kernel.c b/firmware/lib/vboot_api_kernel.c index 85bc2b2f..3a616e4f 100644 --- a/firmware/lib/vboot_api_kernel.c +++ b/firmware/lib/vboot_api_kernel.c @@ -245,10 +245,6 @@ static vb2_error_t vb2_kernel_setup(struct vb2_context *ctx, */ if (shared->flags & VBSD_EC_SOFTWARE_SYNC) ctx->flags |= VB2_CONTEXT_EC_SYNC_SUPPORTED; - if (EC_SLOW_UPDATE) - ctx->flags |= VB2_CONTEXT_EC_SYNC_SLOW; - if (EC_EFS) - ctx->flags |= VB2_CONTEXT_EC_EFS; if (shared->flags & VBSD_NVDATA_V2) ctx->flags |= VB2_CONTEXT_NVDATA_V2; diff --git a/tests/vb2_ec_sync_tests.c b/tests/vb2_ec_sync_tests.c index f8d4d6ff..085cefba 100644 --- a/tests/vb2_ec_sync_tests.c +++ b/tests/vb2_ec_sync_tests.c @@ -310,38 +310,38 @@ static void VbSoftwareSyncTest(void) test_ssync(VBERROR_EC_REBOOT_TO_RO_REQUIRED, VB2_RECOVERY_EC_UPDATE, "Update failed"); - ResetMocks(); - mock_ec_rw_hash[0]++; - ctx->flags |= VB2_CONTEXT_EC_SYNC_SLOW; - test_ssync(0, 0, "Slow update"); - TEST_EQ(screens_displayed[0], VB_SCREEN_WAIT, " wait screen"); - - ResetMocks(); - mock_ec_rw_hash[0]++; - ctx->flags |= VB2_CONTEXT_EC_SYNC_SLOW; - sd->flags &= ~VB2_SD_FLAG_DISPLAY_AVAILABLE; - test_ssync(VBERROR_REBOOT_REQUIRED, 0, - "Slow update - reboot for display"); - - ResetMocks(); - mock_ec_rw_hash[0]++; - ctx->flags |= VB2_CONTEXT_EC_SYNC_SLOW; - vb2_nv_set(ctx, VB2_NV_DISPLAY_REQUEST, 1); - test_ssync(VB2_SUCCESS, 0, - "Slow update with display request"); - TEST_EQ(screens_displayed[0], VB_SCREEN_WAIT, " wait screen"); - TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISPLAY_REQUEST), 1, - " DISPLAY_REQUEST left untouched"); - - ResetMocks(); - mock_ec_rw_hash[0]++; - ctx->flags |= VB2_CONTEXT_EC_SYNC_SLOW; - vb2_nv_set(ctx, VB2_NV_DISPLAY_REQUEST, 0); - test_ssync(VB2_SUCCESS, 0, - "Slow update without display request (no reboot needed)"); - TEST_EQ(screens_displayed[0], VB_SCREEN_WAIT, " wait screen"); - TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISPLAY_REQUEST), 0, - " DISPLAY_REQUEST left untouched"); + /* Tests related to slow update wait screen */ + if (EC_SLOW_UPDATE) { + ResetMocks(); + mock_ec_rw_hash[0]++; + test_ssync(0, 0, "Slow update"); + TEST_EQ(screens_displayed[0], VB_SCREEN_WAIT, " wait screen"); + + ResetMocks(); + mock_ec_rw_hash[0]++; + sd->flags &= ~VB2_SD_FLAG_DISPLAY_AVAILABLE; + test_ssync(VBERROR_REBOOT_REQUIRED, 0, + "Slow update - reboot for display"); + + ResetMocks(); + mock_ec_rw_hash[0]++; + vb2_nv_set(ctx, VB2_NV_DISPLAY_REQUEST, 1); + test_ssync(VB2_SUCCESS, 0, + "Slow update with display request"); + TEST_EQ(screens_displayed[0], VB_SCREEN_WAIT, " wait screen"); + TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISPLAY_REQUEST), 1, + " DISPLAY_REQUEST left untouched"); + + ResetMocks(); + mock_ec_rw_hash[0]++; + vb2_nv_set(ctx, VB2_NV_DISPLAY_REQUEST, 0); + test_ssync(VB2_SUCCESS, 0, + "Slow update without display request " + "(no reboot needed)"); + TEST_EQ(screens_displayed[0], VB_SCREEN_WAIT, " wait screen"); + TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISPLAY_REQUEST), 0, + " DISPLAY_REQUEST left untouched"); + } /* RW cases, no update */ ResetMocks(); |