From 92023c6cfc3db86f9236a01897754a1579afdf64 Mon Sep 17 00:00:00 2001 From: Arthur Heymans Date: Sun, 17 Nov 2019 12:20:30 +0100 Subject: [PATCH] lib/fmap.c: Properly handle cache for !C_ENVIRONMENT_BOOTBLOCK On platforms without C_ENVIRONMENT_BOOTBLOCK the first stage accessing FMAP is romstage. Change-Id: I7d70585b0c076707e73e20c2ed3f11e4c9ffdf37 Signed-off-by: Arthur Heymans --- src/lib/fmap.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/lib/fmap.c b/src/lib/fmap.c index 48aab8f3d5..06e9e202b6 100644 --- a/src/lib/fmap.c +++ b/src/lib/fmap.c @@ -58,6 +58,12 @@ static void report(const struct fmap *fmap) car_set_var(fmap_print_once, 1); } +#if CONFIG(C_ENVIRONMENT_BOOTBLOCK) +#define FIRST_C_STAGE ENV_BOOTBLOCK +#else +#define FIRST_C_STAGE ENV_ROMSTAGE +#endif + static void setup_preram_cache(struct mem_region_device *cache_mrdev) { if (CONFIG(NO_FMAP_CACHE)) @@ -81,10 +87,10 @@ static void setup_preram_cache(struct mem_region_device *cache_mrdev) } struct fmap *fmap = (struct fmap *)_fmap_cache; - if (!ENV_BOOTBLOCK) { - /* NOTE: This assumes that for all platforms running this code, - the bootblock is the first stage and the bootblock will make - at least one FMAP access (usually from finding CBFS). */ + /* NOTE: This assumes that for all platforms running this code, + the first stage running in a C (!romcc) environment does + at least one FMAP access (usually from finding CBFS). */ + if (!FIRST_C_STAGE) { if (!check_signature(fmap)) goto register_cache; -- 2.20.1