summaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
authorJulius Werner <jwerner@chromium.org>2020-09-03 21:17:20 -0700
committerPatrick Georgi <pgeorgi@google.com>2021-03-17 08:05:51 +0000
commit2e973942bc34ff2d7b110ba35bf3cda987838907 (patch)
tree95a3c6d99491ab15a4d2c677f17edcfb5005d54d /src/drivers
parent8e15e91dc4f397371c5ce04a4945945468059953 (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.c5
-rw-r--r--src/drivers/intel/fsp2_0/util.c5
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;
}