[coreboot-gerrit] New patch to review for coreboot: drivers/intel/fsp2_0: Return memory_init HOB list to caller

Andrey Petrov (andrey.petrov@intel.com) gerrit at coreboot.org
Sun Jan 24 03:33:22 CET 2016


Andrey Petrov (andrey.petrov at intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/13349

-gerrit

commit 8e5c72daba6798994bba6f0759462f76d9c0314f
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