diff options
author | Joel Kitching <kitching@google.com> | 2019-04-12 11:45:32 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-05-03 07:02:32 -0700 |
commit | e7edff6653e16ed915c3ad12234d133d1ef4dcc9 (patch) | |
tree | c8e8d39ed37ebe1ef339bb0e46b74124293f6238 /tests | |
parent | 6a72e23120a99fab124395d83ba2d511a1a6664e (diff) | |
download | vboot-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.c | 39 |
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) |