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>
This commit is contained in:
parent
364f9de149
commit
b652aaef99
|
@ -27,7 +27,8 @@ cb_err_t cbfs_boot_lookup(const char *name, bool force_ro,
|
||||||
|
|
||||||
size_t data_offset;
|
size_t data_offset;
|
||||||
cb_err_t err = CB_CBFS_CACHE_FULL;
|
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,
|
err = cbfs_mcache_lookup(cbd->mcache, cbd->mcache_size,
|
||||||
name, mdata, &data_offset);
|
name, mdata, &data_offset);
|
||||||
if (err == CB_CBFS_CACHE_FULL) {
|
if (err == CB_CBFS_CACHE_FULL) {
|
||||||
|
|
Loading…
Reference in New Issue