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;
|
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");
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
Loading…
Reference in New Issue