summaryrefslogtreecommitdiff
path: root/arch/x86/lib
diff options
context:
space:
mode:
authorBin Meng <bmeng.cn@gmail.com>2015-08-20 13:40:19 (GMT)
committerSimon Glass <sjg@chromium.org>2015-08-26 14:54:11 (GMT)
commit57b10f59b7c6ff0d3827e39acb6c3e348adbc14a (patch)
tree699e8a5d501d168cc5f3e03039dcbddf438722bd /arch/x86/lib
parenta52a068eb189c6268017a25d48f50f26b2a08a0b (diff)
downloadu-boot-57b10f59b7c6ff0d3827e39acb6c3e348adbc14a.tar.xz
x86: fsp: Enlarge the size of malloc() pool before relocation
After fsp_init() returns, the stack has already been switched to a place within system memory as defined by CONFIG_FSP_TEMP_RAM_ADDR. Enlarge the size of malloc() pool before relocation since we have plenty of memory now. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Acked-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'arch/x86/lib')
-rw-r--r--arch/x86/lib/fsp/fsp_common.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/arch/x86/lib/fsp/fsp_common.c b/arch/x86/lib/fsp/fsp_common.c
index d564cb9..658f32d 100644
--- a/arch/x86/lib/fsp/fsp_common.c
+++ b/arch/x86/lib/fsp/fsp_common.c
@@ -56,8 +56,22 @@ void board_final_cleanup(void)
int x86_fsp_init(void)
{
- if (!gd->arch.hob_list)
+ if (!gd->arch.hob_list) {
+ /*
+ * The first time we enter here, call fsp_init().
+ * Note the execution does not return to this function,
+ * instead it jumps to fsp_continue().
+ */
fsp_init(CONFIG_FSP_TEMP_RAM_ADDR, BOOT_FULL_CONFIG, NULL);
+ } else {
+ /*
+ * The second time we enter here, adjust the size of malloc()
+ * pool before relocation. Given gd->malloc_base was adjusted
+ * after the call to board_init_f_mem() in arch/x86/cpu/start.S,
+ * we should fix up gd->malloc_limit here.
+ */
+ gd->malloc_limit += CONFIG_FSP_SYS_MALLOC_F_LEN;
+ }
return 0;
}