[coreboot-gerrit] Patch set updated for coreboot: drivers/intel/fsp2_0: Return memory_init HOB list to caller

Alexandru Gagniuc (mr.nuke.me@gmail.com) gerrit at coreboot.org
Mon Jan 25 18:02:14 CET 2016


Alexandru Gagniuc (mr.nuke.me at gmail.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/13349

-gerrit

commit 2d38625b8af94b81fbe26d486aaf5796c948c4c2
Author: Alexandru Gagniuc <alexandrux.gagniuc at intel.com>
Date:   Mon Nov 9 15:37:28 2015 -0800

    drivers/intel/fsp2_0: Return memory_init HOB list to caller
    
    FspMemoryInit creates a list of hand-off-blocks (HOBs) which it
    returns to the caller. One of the HOBs describes an area of memory
    reserved for FSP. If that area is overwritten, FSP will Crash'n'Burn (TM),
    so in a future patch, we will parse the HOB list and mark the FSP
    memory area as reserved.
    
    Change-Id: I5ecbb536ac73245aa1b5a433d3dd8ac6eb4b5411
    Signed-off-by: Alexandru Gagniuc <alexandrux.gagniuc at intel.com>
---
 src/drivers/intel/fsp2_0/include/fsp/api.h   |  2 +-
 src/drivers/intel/fsp2_0/memory_init.c       | 10 +++++-----
 src/soc/intel/apollolake/romstage/romstage.c |  3 ++-
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/drivers/intel/fsp2_0/include/fsp/api.h b/src/drivers/intel/fsp2_0/include/fsp/api.h
index e51b854..f51174f 100644
--- a/src/drivers/intel/fsp2_0/include/fsp/api.h
+++ b/src/drivers/intel/fsp2_0/include/fsp/api.h
@@ -33,7 +33,7 @@ enum fsp_status {
 };
 
 /* Main FSP stages */
-enum fsp_status fsp_memory_init(void);
+enum fsp_status fsp_memory_init(void **hob_list);
 enum fsp_status fsp_silicon_init(void);
 enum fsp_status fsp_notify(void);
 
diff --git a/src/drivers/intel/fsp2_0/memory_init.c b/src/drivers/intel/fsp2_0/memory_init.c
index c05c286..92c30b4 100644
--- a/src/drivers/intel/fsp2_0/memory_init.c
+++ b/src/drivers/intel/fsp2_0/memory_init.c
@@ -58,13 +58,13 @@ void platform_fsp_memory_init_params_cb(struct MEMORY_INIT_UPD *memupd)
 	printk(BIOS_DEBUG, "WEAK: %s called\n", __func__);
 }
 
-static enum fsp_status do_fsp_memory_init(struct fsp_header *hdr)
+static enum fsp_status do_fsp_memory_init(void **hob_list_ptr,
+					  struct fsp_header *hdr)
 {
 	enum fsp_status status;
 	fsp_memory_init_fn fsp_raminit;
 	struct fsp_memory_init_params raminit_params;
 	struct fsp_init_rt_common_buffer rt_buffer;
-	void *hob_list_ptr;
 	struct MEMORY_INIT_UPD raminit_upd;
 	struct UPD_DATA_REGION *upd_region;
 
@@ -81,7 +81,7 @@ static enum fsp_status do_fsp_memory_init(struct fsp_header *hdr)
 	/* Get any board specific changes */
 	raminit_params.nvs_buffer = NULL;
 	raminit_params.rt_buffer = &rt_buffer;
-	raminit_params.hob_list = &hob_list_ptr;
+	raminit_params.hob_list = hob_list_ptr;
 
 	/* Update the UPD data */
 	raminit_upd.GpioPadInitTablePtr = NULL;
@@ -116,12 +116,12 @@ static void relocate_fit(void)
 	memcpy((void*)CONFIG_FIT_CAR_ADDR, (void*)fit_loc, FIT_SIZE);
 }
 
-enum fsp_status fsp_memory_init(void)
+enum fsp_status fsp_memory_init(void **hob_list)
 {
 	struct fsp_header hdr;
 
 	if (fsp_load_binary(&hdr, "blobs/fsp-m.bin") != CB_SUCCESS)
 		return FSP_NOT_FOUND;
 	relocate_fit();
-	return do_fsp_memory_init(&hdr);
+	return do_fsp_memory_init(hob_list, &hdr);
 }
diff --git a/src/soc/intel/apollolake/romstage/romstage.c b/src/soc/intel/apollolake/romstage/romstage.c
index 16e83e1..e35b472 100644
--- a/src/soc/intel/apollolake/romstage/romstage.c
+++ b/src/soc/intel/apollolake/romstage/romstage.c
@@ -74,6 +74,7 @@ static void *alloc_stack_in_ram(void)
 
 asmlinkage void* romstage_entry(void)
 {
+	void *hob_list_ptr;
 	/* Be careful. Bootblock might already have initialized the console */
 	if (!IS_ENABLED(CONFIG_BOOTBLOCK_CONSOLE)) {
 		lpss_console_uart_init();
@@ -84,7 +85,7 @@ asmlinkage void* romstage_entry(void)
 
 	soc_early_romstage_init();
 
-	fsp_memory_init();
+	fsp_memory_init(&hob_list_ptr);
 
 	cbmem_initialize_empty();
 	return alloc_stack_in_ram();



More information about the coreboot-gerrit mailing list