[U-Boot] [PATCH] ARM: socfpga: Put stack at the end of SRAM

Simon Goldschmidt sgoldschmidt at de.pepperl-fuchs.com
Mon May 14 09:01:30 UTC 2018



On 14.05.2018 10:17, Marek Vasut wrote:
> On 05/14/2018 10:03 AM, Simon Goldschmidt wrote:
>> On 12.05.2018 22:27, Marek Vasut wrote:
>>> The global data are in the .data section, so there's no point in
>>> reserving any space for it above stack. Put stack at the end of
>>> SRAM.
>>>
>>> Signed-off-by: Marek Vasut <marex at denx.de>
>>> Cc: Chin Liang See <chin.liang.see at intel.com>
>>> Cc: Dinh Nguyen <dinguyen at kernel.org>
>>> ---
>>>    include/configs/socfpga_common.h | 4 +---
>>>    1 file changed, 1 insertion(+), 3 deletions(-)
>>>
>>> diff --git a/include/configs/socfpga_common.h
>>> b/include/configs/socfpga_common.h
>>> index 4de2aa7929..cb67d539b1 100644
>>> --- a/include/configs/socfpga_common.h
>>> +++ b/include/configs/socfpga_common.h
>>> @@ -35,10 +35,8 @@
>>>    #define CONFIG_SYS_INIT_RAM_ADDR    0xFFE00000
>>>    #define CONFIG_SYS_INIT_RAM_SIZE    0x40000 /* 256KB */
>>>    #endif
>>> -#define CONFIG_SYS_INIT_SP_OFFSET        \
>>> -    (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
>>>    #define CONFIG_SYS_INIT_SP_ADDR            \
>>> -    (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
>>> +    (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_RAM_SIZE)
>>
>> I think this interferes with the bootcount being stored at the end of
>> SRAM. See the defconfigs of 'is1' and 'sr1500' boards - or my local
>> defconfig here :-)
>>
>> I'd really like to keep some room here for bootcounter and some related
>> things I store here.
> 
> So if I understand it correctly, before this patch, the boards overwrote
> the global data ?

Ehrm, reading up on the init code path in the S and C files, it seems 
like that, yes. I just used the two boards as an example. Are they 
actively maintained? get_maintainer.pl shows the boards are maintained 
by denx, so maybe you could clarify this?

Chances are high that these bytes just fit into the 16-byte alignment 
allocated by GENERATED_GBL_DATA_SIZE (and on my board it *is* like that).

> 
> Anyway, if you need some extra space, look at board_init_f_alloc_reserve() .
> 

OK, but that function does not seem to be overridable? How can I reserve 
my own memory here?

And reading this function, I guess your commit message is a bit 
misleading. It seems that the purpose of CONFIG_SYS_INIT_SP_OFFSET like 
it was was to reserve memory for the initial gd (before relocation), 
which is now done in board_init_f_alloc_reserve().


Simon


More information about the U-Boot mailing list