diff options
author | Julius Werner <jwerner@chromium.org> | 2021-01-11 16:07:02 -0800 |
---|---|---|
committer | Julius Werner <jwerner@chromium.org> | 2021-03-17 00:13:53 +0000 |
commit | 965846fcd0657bead026056e9bdc3625a534552e (patch) | |
tree | 1ffd1fe6f6b252087121fa4934d1d9c2d6c112ae /src/lib/prog_loaders.c | |
parent | 1de8708fe50339162b4a59039e0ac45e6f3ffdd0 (diff) | |
download | coreboot-965846fcd0657bead026056e9bdc3625a534552e.tar.xz |
cbfs: Remove prog_locate() for payloads (SELF and FIT)
This patch removes the prog_locate() call for all instances of loading
payload formats (SELF and FIT), as the previous patch did for stages.
Signed-off-by: Julius Werner <jwerner@chromium.org>
Change-Id: I582b37f36fe6f9f26975490a823e85b130ba49a2
Reviewed-on: https://review.coreboot.org/c/coreboot/+/49336
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/lib/prog_loaders.c')
-rw-r--r-- | src/lib/prog_loaders.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/lib/prog_loaders.c b/src/lib/prog_loaders.c index b31d79341f..22abeb5dfd 100644 --- a/src/lib/prog_loaders.c +++ b/src/lib/prog_loaders.c @@ -14,7 +14,6 @@ #include <stage_cache.h> #include <symbols.h> #include <timestamp.h> -#include <fit_payload.h> #include <security/vboot/vboot_common.h> /* Only can represent up to 1 byte less than size_t. */ @@ -154,24 +153,30 @@ void payload_load(void) timestamp_add_now(TS_LOAD_PAYLOAD); - if (prog_locate(payload)) + if (prog_locate_hook(payload)) + goto out; + + payload->cbfs_type = CBFS_TYPE_QUERY; + void *mapping = cbfs_type_map(prog_name(payload), NULL, &payload->cbfs_type); + if (!mapping) goto out; switch (prog_cbfs_type(payload)) { case CBFS_TYPE_SELF: /* Simple ELF */ - selfload_check(payload, BM_MEM_RAM); + selfload_mapped(payload, mapping, BM_MEM_RAM); break; case CBFS_TYPE_FIT: /* Flattened image tree */ if (CONFIG(PAYLOAD_FIT_SUPPORT)) { - fit_payload(payload); + fit_payload(payload, mapping); break; } /* else fall-through */ default: die_with_post_code(POST_INVALID_ROM, - "Unsupported payload type.\n"); + "Unsupported payload type %d.\n", payload->cbfs_type); break; } + cbfs_unmap(mapping); out: if (prog_entry(payload) == NULL) die_with_post_code(POST_INVALID_ROM, "Payload not loaded.\n"); |