summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHsin-Te Yuan <yuanhsinte@google.com>2022-06-30 16:38:40 +0800
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-07-03 00:38:13 +0000
commit0c357126066949f2b5a66641536547fb372fc3a0 (patch)
tree6b484e51c3508e8fa901c0478d83863cccd83a22
parent9ae9d2c03f42b25238f803a26ebae4902541317e (diff)
downloadvboot-0c357126066949f2b5a66641536547fb372fc3a0.tar.gz
2api.c: Initialize display using boot_mode
In vb2api_fw_phase1, use the boot_mode set by vb2_set_boot_mode to determine whether to initialize display. This fixes the edge case where VB2_NV_DIAG_REQUEST is set, but vb2api_diagnostic_ui_enabled() is 0. BUG=none TEST=make runtests BRANCH=none Signed-off-by: Hsin-Te Yuan <yuanhsinte@google.com> Change-Id: Iecb9f52b056906bcd1d7da324390672adc5112c7 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/3737563 Reviewed-by: Hsuan Ting Chen <roccochen@chromium.org> Reviewed-by: Yu-Ping Wu <yupingso@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
-rw-r--r--firmware/2lib/2api.c21
-rw-r--r--tests/vb2_api_tests.c4
2 files changed, 11 insertions, 14 deletions
diff --git a/firmware/2lib/2api.c b/firmware/2lib/2api.c
index c041d8ac..9184b23d 100644
--- a/firmware/2lib/2api.c
+++ b/firmware/2lib/2api.c
@@ -72,26 +72,21 @@ vb2_error_t vb2api_fw_phase1(struct vb2_context *ctx)
*/
vb2_check_recovery(ctx);
+ /* Decide the boot mode */
+ vb2_set_boot_mode(ctx);
+
/*
- * Check for possible reasons to ask the firmware to make display
- * available. VB2_CONTEXT_RECOVERY_MODE may have been set above by
- * vb2_check_recovery. VB2_SD_FLAG_DEV_MODE_ENABLED may have been set
- * above by vb2_check_dev_switch. VB2_NV_DIAG_REQUEST may have been
- * set during the last boot in recovery mode.
+ * Initialize display if VB2_NV_DISPLAY_REQUEST is set or in non-normal
+ * boot mode.
*/
- if (!(ctx->flags & VB2_CONTEXT_DISPLAY_INIT) &&
- (vb2_nv_get(ctx, VB2_NV_DISPLAY_REQUEST) ||
- sd->flags & VB2_SD_FLAG_DEV_MODE_ENABLED ||
- ctx->flags & VB2_CONTEXT_RECOVERY_MODE ||
- vb2_nv_get(ctx, VB2_NV_DIAG_REQUEST)))
+ if (vb2_nv_get(ctx, VB2_NV_DISPLAY_REQUEST) ||
+ ctx->boot_mode != VB2_BOOT_MODE_NORMAL)
ctx->flags |= VB2_CONTEXT_DISPLAY_INIT;
+
/* Mark display as available for downstream vboot and vboot callers. */
if (ctx->flags & VB2_CONTEXT_DISPLAY_INIT)
sd->flags |= VB2_SD_FLAG_DISPLAY_AVAILABLE;
- /* Decide the boot mode */
- vb2_set_boot_mode(ctx);
-
/* Return error if recovery is needed */
if (ctx->flags & VB2_CONTEXT_RECOVERY_MODE) {
/* Always clear RAM when entering recovery mode */
diff --git a/tests/vb2_api_tests.c b/tests/vb2_api_tests.c
index 15c9bd1f..ff7fa18c 100644
--- a/tests/vb2_api_tests.c
+++ b/tests/vb2_api_tests.c
@@ -135,8 +135,10 @@ vb2_error_t vb2_fw_init_gbb(struct vb2_context *c)
vb2_error_t vb2_check_dev_switch(struct vb2_context *c)
{
- if (force_dev_mode)
+ if (force_dev_mode) {
+ c->flags |= VB2_CONTEXT_DEVELOPER_MODE;
sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
+ }
return retval_vb2_check_dev_switch;
}