summaryrefslogtreecommitdiff
path: root/src/security/vboot
diff options
context:
space:
mode:
Diffstat (limited to 'src/security/vboot')
-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");