[coreboot-gerrit] Patch set updated for coreboot: fec5757 sandybridge/nehalem: Determine mrc.cache size from CBFS rather than hardcoding

Vladimir Serbinenko (phcoder@gmail.com) gerrit at coreboot.org
Sun Jan 12 13:26:32 CET 2014


Vladimir Serbinenko (phcoder at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/4659

-gerrit

commit fec5757807cbc3cdf8fd34018aee3f4aefd9c1fa
Author: Vladimir Serbinenko <phcoder at gmail.com>
Date:   Sat Jan 11 07:52:17 2014 +0100

    sandybridge/nehalem: Determine mrc.cache size from CBFS rather than hardcoding
    
    The hardcoded value was 0 on X201. There shouldn't be hardcoding at all,
    hence this patch.
    
    Change-Id: I5b93e5321e470f19ad22ca2cfdb1ebf3b340b252
    Signed-off-by: Vladimir Serbinenko <phcoder at gmail.com>
---
 src/northbridge/intel/sandybridge/mrccache.c | 27 ++++++++++++++++++++-------
 1 file changed, 20 insertions(+), 7 deletions(-)

diff --git a/src/northbridge/intel/sandybridge/mrccache.c b/src/northbridge/intel/sandybridge/mrccache.c
index b8120a8..a37a5ea 100644
--- a/src/northbridge/intel/sandybridge/mrccache.c
+++ b/src/northbridge/intel/sandybridge/mrccache.c
@@ -66,16 +66,29 @@ static int is_mrc_cache(struct mrc_data_container *mrc_cache)
  */
 static u32 get_mrc_cache_region(struct mrc_data_container **mrc_region_ptr)
 {
-	u32 region_size;
 #if CONFIG_CHROMEOS
-	region_size =  find_fmap_entry("RW_MRC_CACHE", (void **)mrc_region_ptr);
+	return find_fmap_entry("RW_MRC_CACHE", (void **)mrc_region_ptr);
 #else
-	region_size = CONFIG_MRC_CACHE_SIZE;
-	*mrc_region_ptr = cbfs_get_file_content(CBFS_DEFAULT_MEDIA,
-			"mrc.cache", 0xac);
-#endif
+	struct cbfs_file *file;
+	const char *cache_name = "mrc.cache";
+
+	*mrc_region_ptr = NULL;
+	file = cbfs_get_file(CBFS_DEFAULT_MEDIA, cache_name);
+
+	if (file == NULL) {
+		printk(BIOS_ERR, "Could not find file '%s'.\n", cache_name);
+		return 0;
+	}
 
-	return region_size;
+	if (ntohl(file->type) != 0xac) {
+		printk(BIOS_ERR,
+		       "File '%s' is of type %x, but we requested %x.\n",
+		       cache_name, ntohl(file->type), 0xac);
+		return 0;
+	}
+	*mrc_region_ptr = (void *)CBFS_SUBHEADER(file);
+	return ntohl(file->len);
+#endif
 }
 
 /*



More information about the coreboot-gerrit mailing list