summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorHsuan Ting Chen <roccochen@chromium.org>2021-08-26 14:37:37 +0800
committerCommit Bot <commit-bot@chromium.org>2021-12-30 06:47:13 +0000
commite4e05a30f88c76e044e5a93955627dcfdcd55974 (patch)
treeb4ac1686154c6e426ebca642202a8f77dd2b27f7 /tests
parent32a228f14660efa611d07ab5e2f38d3ba56242cf (diff)
downloadvboot-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.c11
-rw-r--r--tests/vb2_misc_tests.c32
-rw-r--r--tests/vboot_api_kernel4_tests.c2
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");
}