From 7109304cf241e22923d83344050eb6b30b31484d Mon Sep 17 00:00:00 2001 From: Andrey Petrov Date: Tue, 8 Mar 2016 21:59:01 -0800 Subject: soc/intel/apollolake: Avoid hardcoding CAR region size for FSPM Instead of having to supply CAR memory region during compilation time it is possible to determine it in runtime. FSP2.0 blobs carry a copy of UPD structure pre-populated with 'default' values. The default value for StackSize is actually the real value blob needs. Change-Id: I298e07bb12470ce659f63846ab096189138e594f Signed-off-by: Andrey Petrov Reviewed-on: https://review.coreboot.org/14001 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin --- src/soc/intel/apollolake/Kconfig | 6 ------ src/soc/intel/apollolake/romstage.c | 12 ++++++++---- 2 files changed, 8 insertions(+), 10 deletions(-) (limited to 'src/soc/intel') diff --git a/src/soc/intel/apollolake/Kconfig b/src/soc/intel/apollolake/Kconfig index 022c2e4b30..a11c5a28d6 100644 --- a/src/soc/intel/apollolake/Kconfig +++ b/src/soc/intel/apollolake/Kconfig @@ -98,10 +98,4 @@ config ROMSTAGE_ADDR help The base address (in CAR) where romstage should be linked -config FSPM_STACK_SIZE - hex - default 0x40000 - help - The amount of CAR memory FSPM needs. Recommended at least 256KiB - endif diff --git a/src/soc/intel/apollolake/romstage.c b/src/soc/intel/apollolake/romstage.c index 2c8bbe80c9..7c8924dab4 100644 --- a/src/soc/intel/apollolake/romstage.c +++ b/src/soc/intel/apollolake/romstage.c @@ -141,10 +141,14 @@ void platform_fsp_memory_init_params_cb(struct FSPM_UPD *mupd) mupd->FspmConfig.FitTablePtr = read32((void*) FIT_POINTER); /* Reserve enough memory under TOLUD to save CBMEM header */ mupd->FspmArchUpd.BootLoaderTolumSize = cbmem_overhead_size(); - /* Let FSPM use memory right at the top of CAR */ - /* TODO: Add checks to see if we collide with other areas */ - mupd->FspmArchUpd.StackBase = _car_region_end - CONFIG_FSPM_STACK_SIZE; - mupd->FspmArchUpd.StackSize = CONFIG_FSPM_STACK_SIZE; + /* + * FSPM_UPD passed here is populated with default values provided by + * the blob itself. We let FSPM use top of CAR region of the size it + * requests. + * TODO: add checks to avoid overlap/conflict of CAR usage. + */ + mupd->FspmArchUpd.StackBase = _car_region_end - + mupd->FspmArchUpd.StackSize; } __attribute__ ((weak)) -- cgit v1.2.3