diff options
author | Julius Werner <jwerner@chromium.org> | 2020-09-03 21:17:20 -0700 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2021-03-17 08:05:51 +0000 |
commit | 2e973942bc34ff2d7b110ba35bf3cda987838907 (patch) | |
tree | 95a3c6d99491ab15a4d2c677f17edcfb5005d54d /src/drivers | |
parent | 8e15e91dc4f397371c5ce04a4945945468059953 (diff) |
program_loading: Replace prog_rdev() with raw start pointer and size
Since prog_locate() was eliminated, prog_rdev() only ever represents the
loaded program in memory now. Using the rdev API for this is unnecessary
if we know that the "device" is always just memory. This patch changes
it to be represented by a simple pointer and size. Since some code still
really wants this to be an rdev, introduce a prog_chain_rdev() helper to
translate back to that if necessary.
Signed-off-by: Julius Werner <jwerner@chromium.org>
Change-Id: If7c0f1c5698fa0c326e23c553ea0fe928b25d202
Reviewed-on: https://review.coreboot.org/c/coreboot/+/46483
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'src/drivers')
-rw-r--r-- | src/drivers/intel/fsp2_0/silicon_init.c | 5 | ||||
-rw-r--r-- | src/drivers/intel/fsp2_0/util.c | 5 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/drivers/intel/fsp2_0/silicon_init.c b/src/drivers/intel/fsp2_0/silicon_init.c index 3975a96111..c9898f5ce3 100644 --- a/src/drivers/intel/fsp2_0/silicon_init.c +++ b/src/drivers/intel/fsp2_0/silicon_init.c @@ -210,7 +210,10 @@ void fsps_load(void) if (resume_from_stage_cache()) { printk(BIOS_DEBUG, "Loading FSPS from stage_cache\n"); stage_cache_load_stage(STAGE_REFCODE, fsps); - if (fsp_validate_component(&fsps_hdr, prog_rdev(fsps)) != CB_SUCCESS) + + struct region_device prog_rdev; + prog_chain_rdev(fsps, &prog_rdev); + if (fsp_validate_component(&fsps_hdr, &prog_rdev) != CB_SUCCESS) die("On resume fsps header is invalid\n"); load_done = 1; return; diff --git a/src/drivers/intel/fsp2_0/util.c b/src/drivers/intel/fsp2_0/util.c index 24097f8120..9831e64517 100644 --- a/src/drivers/intel/fsp2_0/util.c +++ b/src/drivers/intel/fsp2_0/util.c @@ -180,7 +180,7 @@ enum cb_err fsp_load_component(struct fsp_load_descriptor *fspld, struct fsp_hea uint32_t compression_algo; size_t output_size; void *dest; - struct region_device source_rdev; + struct region_device source_rdev, prog_rdev; struct prog *fsp_prog = &fspld->fsp_prog; if (fspld->get_destination == NULL) @@ -201,7 +201,8 @@ enum cb_err fsp_load_component(struct fsp_load_descriptor *fspld, struct fsp_hea prog_set_area(fsp_prog, dest, output_size); - if (fsp_validate_component(hdr, prog_rdev(fsp_prog)) != CB_SUCCESS) { + prog_chain_rdev(fsp_prog, &prog_rdev); + if (fsp_validate_component(hdr, &prog_rdev) != CB_SUCCESS) { printk(BIOS_ERR, "Invalid FSP header after load!\n"); return CB_ERR; } |