[coreboot-gerrit] New patch to review for coreboot: d53b953 sandybridge: Store MRC cache in CBFS

Patrick Georgi (patrick@georgi-clan.de) gerrit at coreboot.org
Tue Jun 18 11:50:19 CEST 2013


Patrick Georgi (patrick at georgi-clan.de) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3497

-gerrit

commit d53b9531e507dab4004fc8c35a76182742d5f003
Author: Patrick Georgi <patrick.georgi at secunet.com>
Date:   Tue Jun 18 11:34:01 2013 +0200

    sandybridge: Store MRC cache in CBFS
    
    Location is hard-coded right now, which isn't optimal.
    It must be chip erase block aligned, which might fail on some flash chips
    (it's 64k aligned which should work for most cases).
    
    Change-Id: I6fe0607948c5fab04b9ed565a93e00b96bf44986
    Signed-off-by: Patrick Georgi <patrick.georgi at secunet.com>
---
 src/northbridge/intel/sandybridge/Makefile.inc | 10 ++++++++++
 src/northbridge/intel/sandybridge/mrccache.c   |  4 ++--
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/northbridge/intel/sandybridge/Makefile.inc b/src/northbridge/intel/sandybridge/Makefile.inc
index 01b328b..3c5a4f0 100644
--- a/src/northbridge/intel/sandybridge/Makefile.inc
+++ b/src/northbridge/intel/sandybridge/Makefile.inc
@@ -43,4 +43,14 @@ mrc.bin-position := 0xfffe0000
 endif
 mrc.bin-type := 0xab
 
+$(obj)/mrc.cache:
+	dd if=/dev/zero count=1 \
+	bs=$(shell echo $(CONFIG_MRC_CACHE_SIZE) | awk '{ printf "%d", $$0;}') | \
+	tr '\000' '\377' > $@
+
+cbfs-files-$(CONFIG_HAVE_MRC) += mrc.cache
+mrc.cache-file := $(obj)/mrc.cache
+mrc.cache-position := 0xfff80000
+mrc.cache-type := 0xac
+
 $(obj)/northbridge/intel/sandybridge/acpi.ramstage.o : $(obj)/build.h
diff --git a/src/northbridge/intel/sandybridge/mrccache.c b/src/northbridge/intel/sandybridge/mrccache.c
index 745958a..e19d2c5 100644
--- a/src/northbridge/intel/sandybridge/mrccache.c
+++ b/src/northbridge/intel/sandybridge/mrccache.c
@@ -71,8 +71,8 @@ static u32 get_mrc_cache_region(struct mrc_data_container **mrc_region_ptr)
 	region_size =  find_fmap_entry("RW_MRC_CACHE", (void **)mrc_region_ptr);
 #else
 	region_size = CONFIG_MRC_CACHE_SIZE;
-	*mrc_region_ptr = (struct mrc_data_container *)
-		(CONFIG_MRC_CACHE_BASE + CONFIG_MRC_CACHE_LOCATION);
+	*mrc_region_ptr = cbfs_get_file_content(CBFS_DEFAULT_MEDIA,
+			"mrc.cache", 0xac);
 #endif
 
 	return region_size;



More information about the coreboot-gerrit mailing list