summaryrefslogtreecommitdiff
path: root/common/bloblist.c
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2021-01-13 20:29:43 -0700
committerTom Rini <trini@konsulko.com>2021-01-27 17:03:16 -0500
commit9fe064646d2c9f3914cd5ceae51c34020aa77599 (patch)
tree971f208a76257181d735a00c200ff04a7c2591b1 /common/bloblist.c
parent09d9ba9097ceb374f2802506c9e755fd8d5dd861 (diff)
bloblist: Support relocating to a larger space
Typically in TPL/SPL the bloblist is quite small. But U-Boot proper may want to add a lot more to it, such as ACPI tables. Add a way to expand the bloblist by relocating it in U-Boot proper, along with the other relocation activities. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'common/bloblist.c')
-rw-r--r--common/bloblist.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/common/bloblist.c b/common/bloblist.c
index 33b5862380..e32f551e27 100644
--- a/common/bloblist.c
+++ b/common/bloblist.c
@@ -317,6 +317,15 @@ void bloblist_show_list(void)
}
}
+void bloblist_reloc(void *to, uint to_size, void *from, uint from_size)
+{
+ struct bloblist_hdr *hdr;
+
+ memcpy(to, from, from_size);
+ hdr = to;
+ hdr->size = to_size;
+}
+
int bloblist_init(void)
{
bool expected;
@@ -327,6 +336,8 @@ int bloblist_init(void)
* that runs
*/
expected = !u_boot_first_phase();
+ if (spl_prev_phase() == PHASE_TPL && !IS_ENABLED(CONFIG_TPL_BLOBLIST))
+ expected = false;
if (expected)
ret = bloblist_check(CONFIG_BLOBLIST_ADDR,
CONFIG_BLOBLIST_SIZE);