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:
Patrick Georgi 2015-06-29 22:24:34 +02:00 committed by Patrick Georgi
parent 619781493a
commit aabfe05bff
2 changed files with 19 additions and 19 deletions

View File

@ -63,22 +63,6 @@ static int verstage_should_load(void)
return 0; 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) static int vboot_active(struct asset *asset)
{ {
struct vb2_working_data *wd; struct vb2_working_data *wd;
@ -87,10 +71,8 @@ static int vboot_active(struct asset *asset)
run_verification = verification_should_run(); run_verification = verification_should_run();
if (run_verification) { if (run_verification) {
init_vb2_working_data();
verstage_main(); verstage_main();
} else if (verstage_should_load()) { } else if (verstage_should_load()) {
init_vb2_working_data();
struct prog verstage = struct prog verstage =
PROG_INIT(ASSET_VERSTAGE, PROG_INIT(ASSET_VERSTAGE,
CONFIG_CBFS_PREFIX "/verstage"); CONFIG_CBFS_PREFIX "/verstage");

View File

@ -209,6 +209,22 @@ static uint32_t extend_pcrs(struct vb2_context *ctx)
tpm_extend_pcr(ctx, 1, HWID_DIGEST_PCR); 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 * Verify and select the firmware in the RW image
* *
@ -219,8 +235,10 @@ void verstage_main(void)
{ {
struct vb2_context ctx; struct vb2_context ctx;
struct region_device fw_main; struct region_device fw_main;
struct vb2_working_data *wd = vboot_get_working_data(); struct vb2_working_data *wd;
int rv; int rv;
init_vb2_working_data();
wd = vboot_get_working_data();
timestamp_add_now(TS_START_VBOOT); timestamp_add_now(TS_START_VBOOT);
/* Set up context and work buffer */ /* Set up context and work buffer */