[U-Boot] [PATCH 3/3] arm: socfpga: put initial U-Boot stack into DDR
Marek Vasut
marex at denx.de
Thu Feb 28 21:30:15 UTC 2019
On 2/28/19 9:33 PM, Simon Goldschmidt wrote:
> If SPL pre-reloc stage puts the stack into DDR, U-Boot should be able to
> do that, too.
Here you mention SPL pre-reloc stage, while about mid-way through the
patch you have a comment talking about SPL post-reloc stage, which one
is it ? I think the commit message needs rewording, it's not clear what
the patch does based on it.
On a separate note, this is likely a fix for current release, right ?
Finally , keep in mind the A10 needs to load the FPGA before DRAM
becomes available, so the stack shenanigans there become even more nasty.
> The reason to do so is that this way, U-Boot initial stack can be larger
> than SPL initial stack. In situations where we want to save the SPL
> in SRAM for next boot without reloading, this prevents overwriting the
> SPL DTB in SRAM if U-Boot stack usage gets too high.
>
> Signed-off-by: Simon Goldschmidt <simon.k.r.goldschmidt at gmail.com>
> ---
>
> include/configs/socfpga_common.h | 20 +++++++++++++-------
> 1 file changed, 13 insertions(+), 7 deletions(-)
>
> diff --git a/include/configs/socfpga_common.h b/include/configs/socfpga_common.h
> index c23b34186a..7ae3db233f 100644
> --- a/include/configs/socfpga_common.h
> +++ b/include/configs/socfpga_common.h
> @@ -38,12 +38,23 @@
> #if ((CONFIG_SYS_BOOTCOUNT_ADDR > CONFIG_SYS_INIT_RAM_ADDR) && \
> (CONFIG_SYS_BOOTCOUNT_ADDR < (CONFIG_SYS_INIT_RAM_ADDR + \
> CONFIG_SYS_INIT_RAM_SIZE)))
> -#define CONFIG_SYS_INIT_SP_ADDR CONFIG_SYS_BOOTCOUNT_ADDR
> +#define CONFIG_SPL_STACK CONFIG_SYS_BOOTCOUNT_ADDR
> #else
> -#define CONFIG_SYS_INIT_SP_ADDR \
> +#define CONFIG_SPL_STACK \
> (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_RAM_SIZE)
> #endif
>
> +/*
> + * U-Boot stack setup: if SPL post-reloc uses DDR stack, use it in pre-reloc
> + * phase of U-Boot, too. This prevents overwriting SPL data if stack/heap usage
> + * in U-Boot pre-reloc is higher than in SPL.
> + */
> +#if defined(CONFIG_SPL_STACK_R_ADDR) && CONFIG_SPL_STACK_R_ADDR
> +#define CONFIG_SYS_INIT_SP_ADDR CONFIG_SPL_STACK_R_ADDR
> +#else
> +#define CONFIG_SYS_INIT_SP_ADDR CONFIG_SPL_STACK
> +#endif
> +
> #define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
>
> /*
> @@ -274,11 +285,6 @@ unsigned int cm_get_qspi_controller_clk_hz(void);
> #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x40000
> #endif
>
> -/*
> - * Stack setup
> - */
> -#define CONFIG_SPL_STACK CONFIG_SYS_INIT_SP_ADDR
> -
> /* Extra Environment */
> #ifndef CONFIG_SPL_BUILD
>
>
--
Best regards,
Marek Vasut
More information about the U-Boot
mailing list