summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Georgi <pgeorgi@chromium.org>2015-06-29 22:24:34 +0200
committerPatrick Georgi <pgeorgi@google.com>2015-06-29 23:13:17 +0200
commitaabfe05bff804053cbd921961919df267bc4e39a (patch)
tree92f6271d2fe7bce2ea3457235f83cf108264a890
parent619781493a5dcd0ec027c6fe09d26b7cd49a907f (diff)
downloadcoreboot-aabfe05bff804053cbd921961919df267bc4e39a.tar.xz
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>
-rw-r--r--src/vendorcode/google/chromeos/vboot2/vboot_loader.c18
-rw-r--r--src/vendorcode/google/chromeos/vboot2/verstage.c20
2 files changed, 19 insertions, 19 deletions
diff --git a/src/vendorcode/google/chromeos/vboot2/vboot_loader.c b/src/vendorcode/google/chromeos/vboot2/vboot_loader.c
index d6e760ac28..3c0d67e8b9 100644
--- a/src/vendorcode/google/chromeos/vboot2/vboot_loader.c
+++ b/src/vendorcode/google/chromeos/vboot2/vboot_loader.c
@@ -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");
diff --git a/src/vendorcode/google/chromeos/vboot2/verstage.c b/src/vendorcode/google/chromeos/vboot2/verstage.c
index bc7846a37d..783d1b613b 100644
--- a/src/vendorcode/google/chromeos/vboot2/verstage.c
+++ b/src/vendorcode/google/chromeos/vboot2/verstage.c
@@ -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 */