diff options
author | Hsuan Ting Chen <roccochen@chromium.org> | 2021-08-26 14:37:37 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-12-30 06:47:13 +0000 |
commit | e4e05a30f88c76e044e5a93955627dcfdcd55974 (patch) | |
tree | b4ac1686154c6e426ebca642202a8f77dd2b27f7 /tests | |
parent | 32a228f14660efa611d07ab5e2f38d3ba56242cf (diff) | |
download | vboot-e4e05a30f88c76e044e5a93955627dcfdcd55974.tar.gz |
2lib: Deprecate vb2api_allow_recovery() and VB2_SD_FLAG_MANUAL_RECOVERY
2lib used vb2_api_allow_recovery() to differentiate between manual and
non-manual recovery in 2kernel and UI related areas.
With introducing the ctx->boot_mode, we could decide if it is a manual
recovery or a broken screen (a.k.a non-manual recovery in the original
design) once in vb2api_fw_phase1 and use this boot mode instead for
further justifications.
Also deprecate the sd flag VB2_SD_FLAG_MANUAL_RECOVERY and use the boot
mode instead to determine if it is a manual recovery boot.
BUG=b:181931817
BRANCH=none
TEST=make clean && make runtests
TEST=emerge coreboot vboot_reference depthcharge
Cq-Depend: chromium:3282875
Signed-off-by: Hsuan Ting Chen <roccochen@chromium.org>
Change-Id: Ief4ff6cf82285c5857f0051c1f348ad0f269b4a8
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/3121926
Reviewed-by: Yu-Ping Wu <yupingso@chromium.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/vb2_kernel_tests.c | 11 | ||||
-rw-r--r-- | tests/vb2_misc_tests.c | 32 | ||||
-rw-r--r-- | tests/vboot_api_kernel4_tests.c | 2 |
3 files changed, 21 insertions, 24 deletions
diff --git a/tests/vb2_kernel_tests.c b/tests/vb2_kernel_tests.c index 0dc0e749..0b3e94c7 100644 --- a/tests/vb2_kernel_tests.c +++ b/tests/vb2_kernel_tests.c @@ -24,6 +24,7 @@ static struct vb2_context *ctx; static struct vb2_shared_data *sd; static struct vb2_fw_preamble *fwpre; static const char fw_kernel_key_data[36] = "Test kernel key data"; +static enum vb2_boot_mode *boot_mode; /* Mocked function data */ @@ -82,6 +83,14 @@ static void reset_common_data(enum reset_type t) mock_gbb.recovery_key.key_offset + mock_gbb.recovery_key.key_size; + /* For boot_mode */ + boot_mode = (enum vb2_boot_mode *)&ctx->boot_mode; + if (t == FOR_PHASE1) + *boot_mode = VB2_BOOT_MODE_BROKEN_SCREEN; + else if (t == FOR_NORMAL_BOOT) + *boot_mode = VB2_BOOT_MODE_NORMAL; + else + *boot_mode = VB2_BOOT_MODE_UNDEFINED; if (t == FOR_PHASE1) { uint8_t *kdata; @@ -274,6 +283,7 @@ static void phase1_tests(void) TEST_EQ(sd->kernel_key_offset, 0, " workbuf key offset"); TEST_EQ(sd->kernel_key_size, 0, " workbuf key size"); mock_gbb.h.flags |= VB2_GBB_FLAG_FORCE_MANUAL_RECOVERY; + *boot_mode = VB2_BOOT_MODE_MANUAL_RECOVERY; TEST_ABORT(vb2api_kernel_phase1(ctx), " fatal for manual recovery"); reset_common_data(FOR_PHASE1); @@ -284,6 +294,7 @@ static void phase1_tests(void) TEST_EQ(sd->kernel_key_offset, 0, " workbuf key offset"); TEST_EQ(sd->kernel_key_size, 0, " workbuf key size"); mock_gbb.h.flags |= VB2_GBB_FLAG_FORCE_MANUAL_RECOVERY; + *boot_mode = VB2_BOOT_MODE_MANUAL_RECOVERY; mock_read_res_fail_on_call = 1; TEST_ABORT(vb2api_kernel_phase1(ctx), " fatal for manual recovery"); diff --git a/tests/vb2_misc_tests.c b/tests/vb2_misc_tests.c index c552301e..99f8bae4 100644 --- a/tests/vb2_misc_tests.c +++ b/tests/vb2_misc_tests.c @@ -22,6 +22,7 @@ static struct vb2_context *ctx; static struct vb2_shared_data *sd; static struct vb2_gbb_header gbb; static struct vb2_secdata_fwmp *fwmp; +static enum vb2_boot_mode *boot_mode; /* Mocked function data */ static enum vb2_resource_index mock_resource_index; @@ -29,7 +30,6 @@ static void *mock_resource_ptr; static uint32_t mock_resource_size; static int mock_tpm_clear_called; static int mock_tpm_clear_retval; -static int allow_recovery_retval; static void reset_common_data(void) { @@ -53,16 +53,13 @@ static void reset_common_data(void) mock_tpm_clear_called = 0; mock_tpm_clear_retval = VB2_SUCCESS; - allow_recovery_retval = 0; + + boot_mode = (enum vb2_boot_mode *)&ctx->boot_mode; + *boot_mode = VB2_BOOT_MODE_NORMAL; }; /* Mocked functions */ -int vb2api_allow_recovery(struct vb2_context *c) -{ - return allow_recovery_retval; -} - struct vb2_gbb_header *vb2_get_gbb(struct vb2_context *c) { return &gbb; @@ -430,8 +427,6 @@ static void recovery_tests(void) 0, "recovery not yet decided before testing check_recovery()"); vb2_check_recovery(ctx); TEST_EQ(sd->recovery_reason, 0, "No recovery reason"); - TEST_EQ(sd->flags & VB2_SD_FLAG_MANUAL_RECOVERY, - 0, "Not manual recovery"); TEST_EQ(ctx->flags & VB2_CONTEXT_RECOVERY_MODE, 0, "Not recovery mode"); TEST_NEQ(sd->status & VB2_SD_STATUS_RECOVERY_DECIDED, @@ -443,8 +438,6 @@ static void recovery_tests(void) vb2_check_recovery(ctx); TEST_EQ(sd->recovery_reason, 3, "Recovery reason from request"); TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 3, "NV not cleared"); - TEST_EQ(sd->flags & VB2_SD_FLAG_MANUAL_RECOVERY, - 0, "Not manual recovery"); TEST_NEQ(ctx->flags & VB2_CONTEXT_RECOVERY_MODE, 0, "Recovery mode"); TEST_NEQ(sd->status & VB2_SD_STATUS_RECOVERY_DECIDED, @@ -468,8 +461,6 @@ static void recovery_tests(void) vb2_check_recovery(ctx); TEST_EQ(sd->recovery_reason, VB2_RECOVERY_RO_MANUAL, "Recovery reason forced"); - TEST_NEQ(sd->flags & VB2_SD_FLAG_MANUAL_RECOVERY, - 0, "SD flag set"); TEST_NEQ(sd->status & VB2_SD_STATUS_RECOVERY_DECIDED, 0, "Recovery decided"); @@ -480,8 +471,6 @@ static void recovery_tests(void) vb2_check_recovery(ctx); TEST_EQ(sd->recovery_reason, VB2_RECOVERY_RO_MANUAL, "Recovery reason forced"); - TEST_NEQ(sd->flags & VB2_SD_FLAG_MANUAL_RECOVERY, - 0, "SD flag set"); TEST_NEQ(sd->status & VB2_SD_STATUS_RECOVERY_DECIDED, 0, "Recovery decided"); @@ -492,8 +481,6 @@ static void recovery_tests(void) vb2_check_recovery(ctx); TEST_EQ(sd->recovery_reason, VB2_RECOVERY_US_TEST, "Recovery reason forced from BROKEN"); - TEST_NEQ(sd->flags & VB2_SD_FLAG_MANUAL_RECOVERY, - 0, "SD flag set"); TEST_NEQ(sd->status & VB2_SD_STATUS_RECOVERY_DECIDED, 0, "Recovery decided"); } @@ -661,7 +648,6 @@ static void dev_switch_tests(void) static void enable_dev_tests(void) { reset_common_data(); - allow_recovery_retval = 0; TEST_FAIL(vb2api_enable_developer_mode(ctx), "vb2api_enable_developer_mode - failed"); TEST_EQ(vb2_secdata_firmware_get(ctx, VB2_SECDATA_FIRMWARE_FLAGS) & @@ -669,7 +655,7 @@ static void enable_dev_tests(void) " dev mode flag not set"); reset_common_data(); - allow_recovery_retval = 1; + *boot_mode = VB2_BOOT_MODE_MANUAL_RECOVERY; TEST_SUCC(vb2api_enable_developer_mode(ctx), "vb2api_enable_developer_mode - success"); TEST_NEQ(vb2_secdata_firmware_get(ctx, VB2_SECDATA_FIRMWARE_FLAGS) & @@ -678,7 +664,7 @@ static void enable_dev_tests(void) /* secdata_firmware not initialized, aborts */ reset_common_data(); - allow_recovery_retval = 1; + *boot_mode = VB2_BOOT_MODE_MANUAL_RECOVERY; sd->status &= ~VB2_SD_STATUS_SECDATA_FIRMWARE_INIT; sd->status |= VB2_SD_STATUS_RECOVERY_DECIDED; TEST_ABORT(vb2api_enable_developer_mode(ctx), @@ -830,7 +816,7 @@ static void clear_recovery_tests(void) /* Manual recovery */ reset_common_data(); - allow_recovery_retval = 1; + *boot_mode = VB2_BOOT_MODE_MANUAL_RECOVERY; sd->recovery_reason = 4; ctx->flags |= VB2_CONTEXT_RECOVERY_MODE; vb2_nv_set(ctx, VB2_NV_RECOVERY_REQUEST, 5); @@ -841,9 +827,9 @@ static void clear_recovery_tests(void) TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_SUBCODE), 0, " subcode cleared"); - /* BROKEN recovery */ + /* Broken screen */ reset_common_data(); - allow_recovery_retval = 0; + *boot_mode = VB2_BOOT_MODE_BROKEN_SCREEN; sd->recovery_reason = 4; ctx->flags |= VB2_CONTEXT_RECOVERY_MODE; vb2_nv_set(ctx, VB2_NV_RECOVERY_REQUEST, 5); diff --git a/tests/vboot_api_kernel4_tests.c b/tests/vboot_api_kernel4_tests.c index c1e71afa..e3f19a8c 100644 --- a/tests/vboot_api_kernel4_tests.c +++ b/tests/vboot_api_kernel4_tests.c @@ -328,7 +328,7 @@ static void select_and_load_kernel_tests(void) reset_common_data(); sd->recovery_reason = VB2_RECOVERY_RO_MANUAL; vb2_nv_set(ctx, VB2_NV_RECOVERY_SUBCODE, 13); - sd->flags |= VB2_SD_FLAG_MANUAL_RECOVERY; + ctx->flags &= VB2_CONTEXT_FORCE_RECOVERY_MODE; test_slk(0, 0, "Manual recovery"); TEST_TRUE(commit_data_called, " commit data"); } |