summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Kitching <kitching@google.com>2020-01-16 14:29:39 +0800
committerCommit Bot <commit-bot@chromium.org>2020-01-17 10:47:51 +0000
commit8d76529492a9a0aabe407f794a56b46b6c281020 (patch)
treecb4bbdf44ea203f55abe123657f3d9d83c123524
parent700c0abc2dcbb2ffbb96809e36bd837e33c96974 (diff)
downloadvboot-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.c11
-rw-r--r--firmware/2lib/include/2api.h8
-rw-r--r--firmware/lib/vboot_api_kernel.c4
-rw-r--r--tests/vb2_ec_sync_tests.c64
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();