vboot2: consolidate vboot2 buffer initialization
Instead of calling the init function to clear out vboot2 data structures in multiple places, move the function and call close to verstage_main(). Change-Id: If42e18a8e4581f22f7a7aced70ccbe3188bb0cd5 Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Reviewed-on: http://review.coreboot.org/10701 Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
parent
619781493a
commit
aabfe05bff
|
@ -63,22 +63,6 @@ static int verstage_should_load(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void init_vb2_working_data(void)
|
||||
{
|
||||
struct vb2_working_data *wd;
|
||||
size_t work_size;
|
||||
|
||||
work_size = vb2_working_data_size();
|
||||
wd = vboot_get_working_data();
|
||||
memset(wd, 0, work_size);
|
||||
/*
|
||||
* vboot prefers 16-byte alignment. This takes away 16 bytes
|
||||
* from the VBOOT2_WORK region, but the vboot devs said that's okay.
|
||||
*/
|
||||
wd->buffer_offset = ALIGN_UP(sizeof(*wd), 16);
|
||||
wd->buffer_size = work_size - wd->buffer_offset;
|
||||
}
|
||||
|
||||
static int vboot_active(struct asset *asset)
|
||||
{
|
||||
struct vb2_working_data *wd;
|
||||
|
@ -87,10 +71,8 @@ static int vboot_active(struct asset *asset)
|
|||
run_verification = verification_should_run();
|
||||
|
||||
if (run_verification) {
|
||||
init_vb2_working_data();
|
||||
verstage_main();
|
||||
} else if (verstage_should_load()) {
|
||||
init_vb2_working_data();
|
||||
struct prog verstage =
|
||||
PROG_INIT(ASSET_VERSTAGE,
|
||||
CONFIG_CBFS_PREFIX "/verstage");
|
||||
|
|
|
@ -209,6 +209,22 @@ static uint32_t extend_pcrs(struct vb2_context *ctx)
|
|||
tpm_extend_pcr(ctx, 1, HWID_DIGEST_PCR);
|
||||
}
|
||||
|
||||
static void init_vb2_working_data(void)
|
||||
{
|
||||
struct vb2_working_data *wd;
|
||||
size_t work_size;
|
||||
|
||||
work_size = vb2_working_data_size();
|
||||
wd = vboot_get_working_data();
|
||||
memset(wd, 0, work_size);
|
||||
/*
|
||||
* vboot prefers 16-byte alignment. This takes away 16 bytes
|
||||
* from the VBOOT2_WORK region, but the vboot devs said that's okay.
|
||||
*/
|
||||
wd->buffer_offset = ALIGN_UP(sizeof(*wd), 16);
|
||||
wd->buffer_size = work_size - wd->buffer_offset;
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify and select the firmware in the RW image
|
||||
*
|
||||
|
@ -219,8 +235,10 @@ void verstage_main(void)
|
|||
{
|
||||
struct vb2_context ctx;
|
||||
struct region_device fw_main;
|
||||
struct vb2_working_data *wd = vboot_get_working_data();
|
||||
struct vb2_working_data *wd;
|
||||
int rv;
|
||||
init_vb2_working_data();
|
||||
wd = vboot_get_working_data();
|
||||
timestamp_add_now(TS_START_VBOOT);
|
||||
|
||||
/* Set up context and work buffer */
|
||||
|
|
Loading…
Reference in New Issue