summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/security/vboot/bootmode.c4
-rw-r--r--src/security/vboot/vboot_loader.c1
-rw-r--r--src/security/vboot/vboot_logic.c3
3 files changed, 5 insertions, 3 deletions
diff --git a/src/security/vboot/bootmode.c b/src/security/vboot/bootmode.c
index 4d4dc0ddfd..4625bcdff2 100644
--- a/src/security/vboot/bootmode.c
+++ b/src/security/vboot/bootmode.c
@@ -43,7 +43,7 @@ void vboot_save_recovery_reason_vbnv(void)
set_recovery_mode_into_vbnv(reason);
}
-static void vb2_clear_recovery_reason_vbnv(void *unused)
+static void vboot_clear_recovery_reason_vbnv(void *unused)
{
if (!CONFIG(VBOOT_SAVE_RECOVERY_REASON_ON_REBOOT))
return;
@@ -62,7 +62,7 @@ static void vb2_clear_recovery_reason_vbnv(void *unused)
* only in FSP stages which run before BS_DEV_INIT.
*/
BOOT_STATE_INIT_ENTRY(BS_DEV_INIT, BS_ON_EXIT,
- vb2_clear_recovery_reason_vbnv, NULL);
+ vboot_clear_recovery_reason_vbnv, NULL);
/*
* Returns 1 if vboot is being used and currently in a stage which might have
diff --git a/src/security/vboot/vboot_loader.c b/src/security/vboot/vboot_loader.c
index af4a3fd880..3aac48d174 100644
--- a/src/security/vboot/vboot_loader.c
+++ b/src/security/vboot/vboot_loader.c
@@ -41,7 +41,6 @@ static void vboot_prepare(void)
/* Note: this path is not used for VBOOT_RETURN_FROM_VERSTAGE */
verstage_main();
car_set_var(vboot_executed, 1);
- vboot_save_recovery_reason_vbnv();
} else if (verstage_should_load()) {
struct cbfsf file;
struct prog verstage =
diff --git a/src/security/vboot/vboot_logic.c b/src/security/vboot/vboot_logic.c
index 62e033a0de..2468f5f19e 100644
--- a/src/security/vboot/vboot_logic.c
+++ b/src/security/vboot/vboot_logic.c
@@ -474,6 +474,9 @@ void verstage_main(void)
if (ENV_ROMSTAGE && CONFIG(VBOOT_STARTS_IN_ROMSTAGE))
vboot_log_and_clear_recovery_mode_switch(0);
+ /* Save recovery reason in case of unexpected reboots on x86. */
+ vboot_save_recovery_reason_vbnv();
+
vboot_finalize_work_context(&ctx);
timestamp_add_now(TS_END_VBOOT);
}