diff options
author | Julius Werner <jwerner@chromium.org> | 2020-12-07 15:00:07 -0800 |
---|---|---|
committer | Julius Werner <jwerner@chromium.org> | 2020-12-08 21:38:57 +0000 |
commit | b652aaef990cc3eb481dea7f8d4cc3eecd92ffa1 (patch) | |
tree | 81d887368eed27a91a1a92126c71df91a33ee14d /src/lib | |
parent | 364f9de1491cc48d8a03085a5748e81dcaea4a63 (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')
-rw-r--r-- | src/lib/cbfs.c | 3 |
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) { |