summaryrefslogtreecommitdiff
path: root/src/lib/cbfs.c
diff options
context:
space:
mode:
authorJulius Werner <jwerner@chromium.org>2020-12-07 15:00:07 -0800
committerJulius Werner <jwerner@chromium.org>2020-12-08 21:38:57 +0000
commitb652aaef990cc3eb481dea7f8d4cc3eecd92ffa1 (patch)
tree81d887368eed27a91a1a92126c71df91a33ee14d /src/lib/cbfs.c
parent364f9de1491cc48d8a03085a5748e81dcaea4a63 (diff)
cbfs: Skip mcache in post-RAM stages before CBMEM is online
There have been a few issues with the new CBFS mcache code in stages after romstage, where the mcache resides in CBMEM. In a few special cases the stage may be doing a CBFS lookup before calling cbmem_initialize(). To avoid breaking those cases, this patch makes the CBFS code fall back to a lookup from flash if CBMEM hasn't been reinitialized yet in those stages. Signed-off-by: Julius Werner <jwerner@chromium.org> Change-Id: Icf6d1a1288cb243d0c4c893cc58251687e2873b0 Reviewed-on: https://review.coreboot.org/c/coreboot/+/48429 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Diffstat (limited to 'src/lib/cbfs.c')
-rw-r--r--src/lib/cbfs.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lib/cbfs.c b/src/lib/cbfs.c
index d27550576a..5e6fce49a8 100644
--- a/src/lib/cbfs.c
+++ b/src/lib/cbfs.c
@@ -27,7 +27,8 @@ cb_err_t cbfs_boot_lookup(const char *name, bool force_ro,
size_t data_offset;
cb_err_t err = CB_CBFS_CACHE_FULL;
- if (!CONFIG(NO_CBFS_MCACHE) && !ENV_SMM)
+ if (!CONFIG(NO_CBFS_MCACHE) && !ENV_SMM &&
+ (ENV_ROMSTAGE_OR_BEFORE || cbmem_online()))
err = cbfs_mcache_lookup(cbd->mcache, cbd->mcache_size,
name, mdata, &data_offset);
if (err == CB_CBFS_CACHE_FULL) {