vboot: relocate code to log and clear recovery mode switch
Logging and clearing the recovery mode switch doesn't have anything to do with vboot_handoff. Move it to the main verstage logic file. BUG=b:124141368, b:124192753 TEST=make clean && make test-abuild BRANCH=none Change-Id: I2e74f3893463e43fe5fad4a8df8036560f34e0db Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/33534 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Furquan Shaikh <furquan@google.com>
This commit is contained in:
parent
b6bcb6cc8f
commit
532e0c74e1
|
@ -88,6 +88,7 @@ else
|
||||||
verstage-y += secdata_tpm.c
|
verstage-y += secdata_tpm.c
|
||||||
romstage-$(CONFIG_VBOOT_SEPARATE_VERSTAGE) += secdata_tpm.c
|
romstage-$(CONFIG_VBOOT_SEPARATE_VERSTAGE) += secdata_tpm.c
|
||||||
endif
|
endif
|
||||||
|
romstage-y += vboot_logic.c
|
||||||
romstage-y += vboot_handoff.c common.c
|
romstage-y += vboot_handoff.c common.c
|
||||||
|
|
||||||
ramstage-y += common.c
|
ramstage-y += common.c
|
||||||
|
|
|
@ -122,21 +122,6 @@ void vboot_fill_handoff(void)
|
||||||
|
|
||||||
/* needed until we finish transtion to vboot2 for kernel verification */
|
/* needed until we finish transtion to vboot2 for kernel verification */
|
||||||
fill_vboot_handoff(vh, sd);
|
fill_vboot_handoff(vh, sd);
|
||||||
|
|
||||||
|
|
||||||
/* Log the recovery mode switches if required, before clearing them. */
|
|
||||||
log_recovery_mode_switch();
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The recovery mode switch is cleared (typically backed by EC) here
|
|
||||||
* to allow multiple queries to get_recovery_mode_switch() and have
|
|
||||||
* them return consistent results during the verified boot path as well
|
|
||||||
* as dram initialization. x86 systems ignore the saved dram settings
|
|
||||||
* in the recovery path in order to start from a clean slate. Therefore
|
|
||||||
* clear the state here since this function is called when memory
|
|
||||||
* is known to be up.
|
|
||||||
*/
|
|
||||||
clear_recovery_mode_switch();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include <arch/exception.h>
|
#include <arch/exception.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <bootmode.h>
|
#include <bootmode.h>
|
||||||
|
#include <cbmem.h>
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include <console/vtxprintf.h>
|
#include <console/vtxprintf.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -281,6 +282,26 @@ static uint32_t extend_pcrs(struct vb2_context *ctx)
|
||||||
vboot_extend_pcr(ctx, 1, HWID_DIGEST_PCR);
|
vboot_extend_pcr(ctx, 1, HWID_DIGEST_PCR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void vboot_log_and_clear_recovery_mode_switch(int unused)
|
||||||
|
{
|
||||||
|
/* Log the recovery mode switches if required, before clearing them. */
|
||||||
|
log_recovery_mode_switch();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The recovery mode switch is cleared (typically backed by EC) here
|
||||||
|
* to allow multiple queries to get_recovery_mode_switch() and have
|
||||||
|
* them return consistent results during the verified boot path as well
|
||||||
|
* as dram initialization. x86 systems ignore the saved dram settings
|
||||||
|
* in the recovery path in order to start from a clean slate. Therefore
|
||||||
|
* clear the state here since this function is called when memory
|
||||||
|
* is known to be up.
|
||||||
|
*/
|
||||||
|
clear_recovery_mode_switch();
|
||||||
|
}
|
||||||
|
#if !CONFIG(VBOOT_STARTS_IN_ROMSTAGE)
|
||||||
|
ROMSTAGE_CBMEM_INIT_HOOK(vboot_log_and_clear_recovery_mode_switch)
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Verify and select the firmware in the RW image
|
* Verify and select the firmware in the RW image
|
||||||
*
|
*
|
||||||
|
@ -448,6 +469,11 @@ void verstage_main(void)
|
||||||
vboot_set_selected_region(region_device_region(&fw_main));
|
vboot_set_selected_region(region_device_region(&fw_main));
|
||||||
|
|
||||||
verstage_main_exit:
|
verstage_main_exit:
|
||||||
|
/* If CBMEM is not up yet, let the ROMSTAGE_CBMEM_INIT_HOOK take care
|
||||||
|
of running this function. */
|
||||||
|
if (ENV_ROMSTAGE && CONFIG(VBOOT_STARTS_IN_ROMSTAGE))
|
||||||
|
vboot_log_and_clear_recovery_mode_switch(0);
|
||||||
|
|
||||||
vboot_finalize_work_context(&ctx);
|
vboot_finalize_work_context(&ctx);
|
||||||
timestamp_add_now(TS_END_VBOOT);
|
timestamp_add_now(TS_END_VBOOT);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue