On 11/01/2018 09:31 PM, Simon Goldschmidt wrote: > On Thu, Nov 1, 2018 at 8:26 PM Simon Goldschmidt > <simon.k.r.goldschm...@gmail.com> wrote: >> >> On 31.10.2018 11:00, Marek Vasut wrote: >>> On 10/31/2018 06:44 AM, Simon Goldschmidt wrote: >>>> On Tue, Oct 30, 2018 at 11:02 PM Marek Vasut <marek.va...@gmail.com> wrote: >>>>> On 10/30/2018 10:30 PM, Simon Goldschmidt wrote: >>>>>> On 30.10.2018 22:26, Marek Vasut wrote: >>>>>>> On 10/30/2018 10:23 PM, Simon Goldschmidt wrote: >>>>>>>> Correctly define CONFIG_SPL_MAX_FOOTPRINT to make the default arm >>>>>>>> linker script for SPL check the total SRAM size available for SPL >>>>>>>> (code, data, bss, heap, global data). >>>>>>>> >>>>>>>> The previously existing define CONFIG_SPL_MAX_SIZE seems to only >>>>>>>> check the binary size (which is without bss, heap and gd). >>>>>>>> >>>>>>>> Signed-off-by: Simon Goldschmidt <simon.k.r.goldschm...@gmail.com> >>>>>>>> --- >>>>>>>> >>>>>>>> include/configs/socfpga_common.h | 7 +++++++ >>>>>>>> 1 file changed, 7 insertions(+) >>>>>>>> >>>>>>>> diff --git a/include/configs/socfpga_common.h >>>>>>>> b/include/configs/socfpga_common.h >>>>>>>> index 2330143cf1..9103d0a966 100644 >>>>>>>> --- a/include/configs/socfpga_common.h >>>>>>>> +++ b/include/configs/socfpga_common.h >>>>>>>> @@ -242,6 +242,13 @@ unsigned int cm_get_qspi_controller_clk_hz(void); >>>>>>>> #define CONFIG_SPL_TEXT_BASE CONFIG_SYS_INIT_RAM_ADDR >>>>>>>> #define CONFIG_SPL_MAX_SIZE CONFIG_SYS_INIT_RAM_SIZE >>>>>>>> +/* Check total size of SPL including BSS, malloc area and gd */ >>>>>>>> +#include <generated/generic-asm-offsets.h> >>>>>>>> +#define CONFIG_SPL_MAX_FOOTPRINT (CONFIG_SYS_INIT_SP_ADDR - \ >>>>>>>> + CONFIG_SYS_INIT_RAM_ADDR - \ >>>>>>>> + CONFIG_SYS_MALLOC_F_LEN - \ >>>>>>>> + GENERATED_GBL_DATA_SIZE) >>>>>>> Are you sure this calculation is correct ? INIT_SP_ADDR is I think the >>>>>>> SRAM offset in the address space. Shouldn't that contain INIT_SP_SIZE or >>>>>>> something ? >>>>>> Yes, I'm pretty sure. INIT_SP_ADDR is defined as INIT_RAM_ADDR + >>>>>> INIT_RAM_SIZE. >>>>>> So by subtracting INIT_RAM_ADDR again, I effectively get "INIT_RAM_ADDR >>>>>> - MALLOC_F_LEN - GBL_DATA_SIZE". >>>>>> >>>>>> But I did it this way to keep it working after Stefan's fix for >>>>>> reserving the boot counter location is applied. >>>>> Now that's confusing :-) Add a comment explaining this into a V2 please, >>>>> otherwise the confusion will continue ... >>>> You're probably right. I'll send a V2 making this more clear. >>> Thanks >> >> Re-checking this, I found the check is still not correct as it would >> leave 4 bytes for the stack only. Is there an option that controls how >> much stack should be preserved for SPL somewhere? > > And to make matters worse, the devicetree is also not included in the > size check done by 'arch/arm/cpu/u-boot-spl.lds' unless we select > CONFIG_OF_EMBED. > > While this would be OK for SPL, I think it wouldn't be for U-Boot. How > do other platforms handle this size check?
Can git grep help here ? -- Best regards, Marek Vasut _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot