summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJulius Werner <jwerner@chromium.org>2023-11-09 12:20:59 -0800
committerFelix Held <felix-coreboot@felixheld.de>2023-11-13 14:19:01 +0000
commitc827c9b216f7e0d9cfd856f03ed18544e8208193 (patch)
tree01f8436c13da34ec364e0ef895684c9c30328515 /src
parent432e92688eca0e85cbaebca3232f65936b305a98 (diff)
fmap: Map less space in fallback path without CBFS verification
This is a fixup to CB:78914 which inadvertently broke the RK3288 SoC. Unfortunately we can only accommodate very little PRERAM_CBFS_CACHE in the tiny SRAM for that chip, so we would not be able to map an entire FMAP. Solve this problem for now by mapping less space when CBFS verification is disabled, and disallowing CBFS verification on that SoC. Change-Id: I2e419d157dc26bb70a6dd62e44dc6607e51cf791 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/78971 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Yu-Ping Wu <yupingso@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/lib/fmap.c3
-rw-r--r--src/soc/rockchip/rk3288/bootblock.c3
2 files changed, 5 insertions, 1 deletions
diff --git a/src/lib/fmap.c b/src/lib/fmap.c
index 77817d1e60..8901ff7ce2 100644
--- a/src/lib/fmap.c
+++ b/src/lib/fmap.c
@@ -130,7 +130,8 @@ static int find_fmap_directory(struct region_device *fmrd)
if (boot == NULL)
return -1;
- fmap = rdev_mmap(boot, offset, FMAP_SIZE);
+ fmap = rdev_mmap(boot, offset,
+ CONFIG(CBFS_VERIFICATION) ? FMAP_SIZE : sizeof(struct fmap));
if (fmap == NULL)
return -1;
diff --git a/src/soc/rockchip/rk3288/bootblock.c b/src/soc/rockchip/rk3288/bootblock.c
index 60ead64785..a821ef1401 100644
--- a/src/soc/rockchip/rk3288/bootblock.c
+++ b/src/soc/rockchip/rk3288/bootblock.c
@@ -8,6 +8,9 @@
#include <soc/timer.h>
#include <symbols.h>
+_Static_assert(!CONFIG(CBFS_VERIFICATION),
+ "RK3288 doesn't have enough PRERAM_CBFS_CACHE to support the FMAP mapping needed for CBFS verification");
+
void bootblock_soc_init(void)
{
rkclk_init();