summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoel Kitching <kitching@google.com>2019-05-17 14:26:01 +0800
committerPatrick Georgi <pgeorgi@google.com>2019-05-20 12:48:19 +0000
commit7576bd7f4299a3af220a7ba3d6c4928812c2982b (patch)
treea73993f9b448d8aed23ad2fe006b5a999af1cddf /src
parentfc46ad8a8b99fbfaf5f2e9112abbb26221c1aeff (diff)
vboot: save whether developer mode is enabled
Save whether or not vboot has selected developer mode as a flag in vboot_working_data. Other coreboot code may access this flag without needing to consult vboot_handoff (which is in the process of being deprecated). BUG=b:124141368, b:124192753 TEST=make clean && make test-abuild BRANCH=none Change-Id: Ieb6ac4937c943aea78ddc762595a05387d2b8114 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/32843 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Patrick Georgi <pgeorgi@google.com> Reviewed-by: Julius Werner <jwerner@chromium.org>
Diffstat (limited to 'src')
-rw-r--r--src/security/vboot/bootmode.c6
-rw-r--r--src/security/vboot/misc.h2
-rw-r--r--src/security/vboot/vboot_common.c5
-rw-r--r--src/security/vboot/vboot_common.h1
-rw-r--r--src/security/vboot/vboot_logic.c7
5 files changed, 9 insertions, 12 deletions
diff --git a/src/security/vboot/bootmode.c b/src/security/vboot/bootmode.c
index e6e53b6f33..68749f008b 100644
--- a/src/security/vboot/bootmode.c
+++ b/src/security/vboot/bootmode.c
@@ -164,10 +164,8 @@ int vboot_recovery_mode_memory_retrain(void)
int vboot_developer_mode_enabled(void)
{
- if (cbmem_possibly_online() && vboot_handoff_check_developer_flag())
- return 1;
-
- return 0;
+ return cbmem_possibly_online() &&
+ vboot_get_working_data()->flags & VBOOT_WD_FLAG_DEVELOPER_MODE;
}
#if CONFIG(VBOOT_NO_BOARD_SUPPORT)
diff --git a/src/security/vboot/misc.h b/src/security/vboot/misc.h
index 23159c8a0d..acb6dbbd02 100644
--- a/src/security/vboot/misc.h
+++ b/src/security/vboot/misc.h
@@ -47,6 +47,8 @@ struct vboot_working_data {
*/
/* vboot requests display initialization from coreboot. */
#define VBOOT_WD_FLAG_DISPLAY_INIT (1 << 0)
+/* vboot has selected developer mode. */
+#define VBOOT_WD_FLAG_DEVELOPER_MODE (1 << 1)
/*
* Source: security/vboot/common.c
diff --git a/src/security/vboot/vboot_common.c b/src/security/vboot/vboot_common.c
index 14f154c438..ff8e6c896c 100644
--- a/src/security/vboot/vboot_common.c
+++ b/src/security/vboot/vboot_common.c
@@ -88,11 +88,6 @@ static int vboot_get_handoff_flag(uint32_t flag)
return !!(vbho->out_flags & flag);
}
-int vboot_handoff_check_developer_flag(void)
-{
- return vboot_get_handoff_flag(VB_INIT_OUT_ENABLE_DEVELOPER);
-}
-
int vboot_handoff_check_recovery_flag(void)
{
return vboot_get_handoff_flag(VB_INIT_OUT_ENABLE_RECOVERY);
diff --git a/src/security/vboot/vboot_common.h b/src/security/vboot/vboot_common.h
index 9a02303d12..a785a8ba34 100644
--- a/src/security/vboot/vboot_common.h
+++ b/src/security/vboot/vboot_common.h
@@ -62,7 +62,6 @@ int vboot_get_handoff_info(void **addr, uint32_t *size);
* Returns value read for other fields
*/
int vboot_handoff_check_recovery_flag(void);
-int vboot_handoff_check_developer_flag(void);
int vboot_handoff_get_recovery_reason(void);
/* ============================ VBOOT REBOOT ============================== */
diff --git a/src/security/vboot/vboot_logic.c b/src/security/vboot/vboot_logic.c
index df34490f98..00347c3f58 100644
--- a/src/security/vboot/vboot_logic.c
+++ b/src/security/vboot/vboot_logic.c
@@ -364,10 +364,13 @@ void verstage_main(void)
vboot_reboot();
}
- /* Is vboot declaring that display is available? If so, we should mark
- it down, so that the mainboard/SoC knows to initialize display. */
+ /* Jot down some information from vboot which may be required later on
+ in coreboot boot flow. */
if (ctx.flags & VB2_CONTEXT_DISPLAY_INIT)
+ /* Mainboard/SoC should initialize display. */
vboot_get_working_data()->flags |= VBOOT_WD_FLAG_DISPLAY_INIT;
+ if (ctx.flags & VB2_CONTEXT_DEVELOPER_MODE)
+ vboot_get_working_data()->flags |= VBOOT_WD_FLAG_DEVELOPER_MODE;
/* Determine which firmware slot to boot (based on NVRAM) */
printk(BIOS_INFO, "Phase 2\n");