[coreboot-gerrit] Patch set updated for coreboot: lib/cbfs: Use fmap derived information about the COREBOOT region

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Tue May 3 02:28:54 CEST 2016


Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/14572

-gerrit

commit d6e410bb22339c5d3cc324086a1437b2e00c0ab1
Author: Patrick Georgi <pgeorgi at chromium.org>
Date:   Mon May 2 17:22:29 2016 +0800

    lib/cbfs: Use fmap derived information about the COREBOOT region
    
    It used to use CONFIG_CBFS_SIZE. The plan is that CBFS_SIZE only informs
    default*.fmd generation, while everything else derives its information
    from there.
    
    Also document the existing assumption that boot media should access the
    COREBOOT region (and not any other potentially existing fmap region
    containing a CBFS).
    
    Change-Id: I08254e4510f71edf99c2c8b56ac8f92008727c4a
    Signed-off-by: Patrick Georgi <pgeorgi at chromium.org>
---
 src/lib/Makefile.inc | 7 +++++++
 src/lib/cbfs.c       | 9 +++++++--
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/lib/Makefile.inc b/src/lib/Makefile.inc
index 3352a30..4c6a395 100644
--- a/src/lib/Makefile.inc
+++ b/src/lib/Makefile.inc
@@ -179,6 +179,13 @@ $(call src-to-obj,smm,$(dir)/version.c) : $(obj)/build.h
 $(call src-to-obj,verstage,$(dir)/version.c) : $(obj)/build.h
 $(call src-to-obj,postcar,$(dir)/version.c) : $(obj)/build.h
 
+$(call src-to-obj,bootblock,$(dir)/cbfs.c) : $(obj)/fmap_config.h
+$(call src-to-obj,romstage,$(dir)/cbfs.c) : $(obj)/fmap_config.h
+$(call src-to-obj,ramstage,$(dir)/cbfs.c) : $(obj)/fmap_config.h
+$(call src-to-obj,smm,$(dir)/cbfs.c) : $(obj)/fmap_config.h
+$(call src-to-obj,verstage,$(dir)/cbfs.c) : $(obj)/fmap_config.h
+$(call src-to-obj,postcar,$(dir)/cbfs.c) : $(obj)/fmap_config.h
+
 romstage-y += bootmode.c
 ramstage-y += bootmode.c
 verstage-y += bootmode.c
diff --git a/src/lib/cbfs.c b/src/lib/cbfs.c
index e1626d7..764a6f7 100644
--- a/src/lib/cbfs.c
+++ b/src/lib/cbfs.c
@@ -25,6 +25,8 @@
 #include <symbols.h>
 #include <timestamp.h>
 
+#include "fmap_config.h"
+
 #define ERROR(x...) printk(BIOS_ERR, "CBFS: " x)
 #define LOG(x...) printk(BIOS_INFO, "CBFS: " x)
 #if IS_ENABLED(CONFIG_DEBUG_CBFS)
@@ -215,6 +217,7 @@ out:
 	return 0;
 }
 
+/* This only supports the "COREBOOT" fmap region. */
 static int cbfs_master_header_props(struct cbfs_props *props)
 {
 	struct cbfs_header header;
@@ -227,13 +230,15 @@ static int cbfs_master_header_props(struct cbfs_props *props)
 	if (bdev == NULL)
 		return -1;
 
+	size_t fmap_top = ___FMAP__COREBOOT_BASE + ___FMAP__COREBOOT_SIZE;
+
 	/* Find location of header using signed 32-bit offset from
 	 * end of CBFS region. */
-	offset = CONFIG_CBFS_SIZE - sizeof(int32_t);
+	offset = fmap_top - sizeof(int32_t);
 	if (rdev_readat(bdev, &rel_offset, offset, sizeof(int32_t)) < 0)
 		return -1;
 
-	offset = CONFIG_CBFS_SIZE + rel_offset;
+	offset = fmap_top + rel_offset;
 	if (rdev_readat(bdev, &header, offset, sizeof(header)) < 0)
 		return -1;
 



More information about the coreboot-gerrit mailing list