libpayload: cbfs: Fix CBFS max size calculation.
Cherry-picking CBFS fix from http://review.coreboot.org/#/c/2292/
For x86, the old CBFS search behavior was to bypass bootblock and we should keep
that. This will speed up searching if a file does not exist in CBFS.
For arm, the size in header is correct now so we can remove the hack by
CONFIG_ROM_SIZE.
Change-Id: I286ecda73bd781550e03b0b817ed3fb567d6b8d7
Signed-off-by: Hung-Te Lin <hungte@chromium.org>
Reviewed-on: http://review.coreboot.org/2458
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
diff --git a/payloads/libpayload/libcbfs/cbfs_core.c b/payloads/libpayload/libcbfs/cbfs_core.c
index 9bae188..2ea2771 100644
--- a/payloads/libpayload/libcbfs/cbfs_core.c
+++ b/payloads/libpayload/libcbfs/cbfs_core.c
@@ -116,12 +116,12 @@
align = ntohl(header->align);
romsize = ntohl(header->romsize);
- // TODO header->romsize seems broken now on ARM. Remove this when it's
- // fixed.
-#if defined(CONFIG_ARCH_ARMV7) && CONFIG_ARCH_ARMV7
- romsize = CONFIG_ROM_SIZE;
+ // TODO Add a "size" in CBFS header for a platform independent way to
+ // determine the end of CBFS data.
+#if defined(CONFIG_ARCH_X86) && CONFIG_ARCH_X86
+ romsize -= htonl(header->bootblocksize);
#endif
- DEBUG("offset: 0x%x, align: %d, romsize: %d\n", offset, align, romsize);
+ DEBUG("CBFS location: 0x%x~0x%x, align: %d\n", offset, romsize, align);
LOG("Looking for '%s' starting from 0x%x.\n", name, offset);
media->open(media);