summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJoel Kitching <kitching@google.com>2019-04-12 11:45:32 +0800
committerchrome-bot <chrome-bot@chromium.org>2019-05-03 07:02:32 -0700
commite7edff6653e16ed915c3ad12234d133d1ef4dcc9 (patch)
treec8e8d39ed37ebe1ef339bb0e46b74124293f6238 /tests
parent6a72e23120a99fab124395d83ba2d511a1a6664e (diff)
downloadvboot-e7edff6653e16ed915c3ad12234d133d1ef4dcc9.tar.gz
vboot: implement DISPLAY_INIT context and SD flag
As part of go/vboot2-cleanup-oprom, introduce new context flag DISPLAY_INIT. The equivalent shared data flag DISPLAY_AVAILABLE is also introduced for downstream vboot to read. The context flag serves the dual purpose of: (1) the vboot caller (coreboot) telling vboot that "display will be initialized regardless", for cases when a mainboard/SoC cannot disable its display initialization code (see coreboot Kconfig VBOOT_MUST_REQUEST_DISPLAY, previously VBOOT_OPROM_MATTERS). (2) vboot telling the vboot caller (coreboot) that "display initialization should occur" for cases when vboot needs display enabled on this boot. BUG=b:124141368, chromium:948529 TEST=make clean && make runtests BRANCH=none Change-Id: If18bedf99c0f6e366c12d043377edb7bcdb35fdf Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/1564232 Commit-Ready: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/vb2_api_tests.c39
1 files changed, 38 insertions, 1 deletions
diff --git a/tests/vb2_api_tests.c b/tests/vb2_api_tests.c
index 64995591..8c31c2ec 100644
--- a/tests/vb2_api_tests.c
+++ b/tests/vb2_api_tests.c
@@ -34,7 +34,7 @@ static const uint8_t mock_hwid_digest[VB2_GBB_HWID_DIGEST_SIZE] = {
};
/* Mocked function data */
-
+static int force_dev_mode;
static int retval_vb2_fw_parse_gbb;
static int retval_vb2_check_dev_switch;
static int retval_vb2_check_tpm_clear;
@@ -61,6 +61,7 @@ static void reset_common_data(enum reset_type t)
vb2_secdata_create(&cc);
vb2_secdata_init(&cc);
+ force_dev_mode = 0;
retval_vb2_fw_parse_gbb = VB2_SUCCESS;
retval_vb2_check_dev_switch = VB2_SUCCESS;
retval_vb2_check_tpm_clear = VB2_SUCCESS;
@@ -79,6 +80,8 @@ int vb2_fw_parse_gbb(struct vb2_context *ctx)
int vb2_check_dev_switch(struct vb2_context *ctx)
{
+ if (force_dev_mode)
+ sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
return retval_vb2_check_dev_switch;
}
@@ -121,6 +124,10 @@ static void phase1_tests(void)
TEST_EQ(sd->recovery_reason, 0, " not recovery");
TEST_EQ(cc.flags & VB2_CONTEXT_RECOVERY_MODE, 0, " recovery flag");
TEST_EQ(cc.flags & VB2_CONTEXT_CLEAR_RAM, 0, " clear ram flag");
+ TEST_EQ(cc.flags & VB2_CONTEXT_DISPLAY_INIT,
+ 0, " display init context flag");
+ TEST_EQ(sd->flags & VB2_SD_FLAG_DISPLAY_AVAILABLE,
+ 0, " display available SD flag");
reset_common_data(FOR_MISC);
retval_vb2_fw_parse_gbb = VB2_ERROR_GBB_MAGIC;
@@ -146,6 +153,11 @@ static void phase1_tests(void)
"phase1 dev switch error in recovery");
TEST_EQ(sd->recovery_reason, VB2_RECOVERY_RO_UNSPECIFIED,
" recovery reason");
+ /* Check that DISPLAY_AVAILABLE gets set on recovery mode. */
+ TEST_NEQ(cc.flags & VB2_CONTEXT_DISPLAY_INIT,
+ 0, " display init context flag");
+ TEST_NEQ(sd->flags & VB2_SD_FLAG_DISPLAY_AVAILABLE,
+ 0, " display available SD flag");
reset_common_data(FOR_MISC);
cc.secdata[0] ^= 0x42;
@@ -235,6 +247,31 @@ static void phase1_tests(void)
1, " tpm reboot request");
TEST_EQ(vb2_nv_get(&cc, VB2_NV_RECOVERY_REQUEST), 0,
" recovery request cleared");
+
+ /* Cases for checking DISPLAY_INIT and DISPLAY_AVAILABLE. */
+ reset_common_data(FOR_MISC);
+ cc.flags |= VB2_CONTEXT_DISPLAY_INIT;
+ TEST_SUCC(vb2api_fw_phase1(&cc), "phase1 with DISPLAY_INIT");
+ TEST_NEQ(cc.flags & VB2_CONTEXT_DISPLAY_INIT,
+ 0, " display init context flag");
+ TEST_NEQ(sd->flags & VB2_SD_FLAG_DISPLAY_AVAILABLE,
+ 0, " display available SD flag");
+
+ reset_common_data(FOR_MISC);
+ vb2_nv_set(&cc, VB2_NV_OPROM_NEEDED, 1);
+ TEST_SUCC(vb2api_fw_phase1(&cc), "phase1 with OPROM_NEEDED");
+ TEST_NEQ(cc.flags & VB2_CONTEXT_DISPLAY_INIT,
+ 0, " display init context flag");
+ TEST_NEQ(sd->flags & VB2_SD_FLAG_DISPLAY_AVAILABLE,
+ 0, " display available SD flag");
+
+ reset_common_data(FOR_MISC);
+ force_dev_mode = 1;
+ TEST_SUCC(vb2api_fw_phase1(&cc), "phase1 in dev mode");
+ TEST_NEQ(cc.flags & VB2_CONTEXT_DISPLAY_INIT,
+ 0, " display init context flag");
+ TEST_NEQ(sd->flags & VB2_SD_FLAG_DISPLAY_AVAILABLE,
+ 0, " display available SD flag");
}
static void phase2_tests(void)