[U-Boot] [PATCH 2/5] x86: fsp: Reserve different malloc size before relocation

Bin Meng bmeng.cn at gmail.com
Mon Aug 3 03:49:30 CEST 2015


Hi Simon,

On Mon, Aug 3, 2015 at 6:31 AM, Simon Glass <sjg at chromium.org> wrote:
> Hi Bin,
>
> On 27 July 2015 at 01:33, Bin Meng <bmeng.cn at gmail.com> wrote:
>> Currently Intel queensbay fsp initializes a CAR size with only 4KiB,
>> which is not enough when dm pci is enabled before relocation. Change
>> arch/x86/start.s to reserve a small size before fsp_init() is called
>> and some bigger size after fsp_init() which can be configured via
>> the exisiting CONFIG_MALLOC_F_LEN.
>>
>> Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
>> ---
>>
>>  arch/x86/Kconfig     |  5 +++++
>>  arch/x86/cpu/start.S | 10 +++++++++-
>>  2 files changed, 14 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
>> index e8968a7..afd4a84 100644
>> --- a/arch/x86/Kconfig
>> +++ b/arch/x86/Kconfig
>> @@ -227,6 +227,11 @@ config FSP_TEMP_RAM_ADDR
>>           Stack top address which is used in FspInit after DRAM is ready and
>>           CAR is disabled.
>>
>> +config SYS_MALLOC_F_LEN_PRE_FSP
>> +       hex
>> +       depends on HAVE_FSP
>> +       default 0x800
>> +
>>  config SMP
>>         bool "Enable Symmetric Multiprocessing"
>>         default n
>> diff --git a/arch/x86/cpu/start.S b/arch/x86/cpu/start.S
>> index 00e585e..cc6fbe9 100644
>> --- a/arch/x86/cpu/start.S
>> +++ b/arch/x86/cpu/start.S
>> @@ -137,7 +137,15 @@ skip_hob:
>>         movl    %esp, %ecx
>>
>>  #if defined(CONFIG_SYS_MALLOC_F_LEN)
>> -       subl    $CONFIG_SYS_MALLOC_F_LEN, %esp
>> +#ifdef CONFIG_HAVE_FSP
>> +       test    %esi, %esi
>> +       jnz     1f
>> +       subl    $CONFIG_SYS_MALLOC_F_LEN_PRE_FSP, %esp
>> +       jmp     2f
>> +#endif
>> +1:
>> +       subl    $CONFIG_SYS_MALLOC_F_LEN, %esp
>> +2:
>>         movl    %eax, %edx
>>         addl    $GD_MALLOC_BASE, %edx
>>         movl    %esp, (%edx)
>> --
>> 1.8.2.1
>>
>
> This is a bit of an unfortunate problem. While CONFIG_SYS_MALLOC_F_LEN
> is a generic thing (and in fact I'm about to send a series to make x86
> use board_init_f_mem() instead of all this code)
> CONFIG_SYS_MALLOC_F_LEN_PRE_FSP is not.
>
> One option (with my new series) is to simply change the stack after
> board_init_f_mem() returns. Let's see what you think of that series
> and then we can revisit this.
>

OK, I will test this on top of your series.

Regards,
Bin


More information about the U-Boot mailing list