[U-Boot] [PATCH v2] armv8: fsl-layerscale: Rewrite reserving memory for MC and debug server
Scott Wood
scottwood at freescale.com
Wed Nov 18 23:15:17 CET 2015
On Wed, 2015-11-18 at 10:05 -0800, York Sun wrote:
> MC and debug server are not board-specific. Instead of reserving
> memory in each board file, a weak function is introduced in board_f.c
> to replace macro CONFIG_SYS_MEM_TOP_HIDE for more flexibility.
> Legacy use of this macro is still supported. Move the reservation
> calculation to SoC file. Reduce debug server memory by 2MB to
> make room for secure memory.
>
> In the system with MC and debug server, the top of u-boot memory
> is not the end of memory. PRAM is not used for this reservation.
>
> Signed-off-by: York Sun <yorksun at freescale.com>
>
> ---
>
> Changes in v2:
> Revise commit message.
>
> README | 6 +++---
> arch/arm/cpu/armv8/fsl-layerscape/cpu.c | 18 ++++++++++++++++++
> board/freescale/ls2085a/ls2085a.c | 17 -----------------
> board/freescale/ls2085aqds/ls2085aqds.c | 17 -----------------
> board/freescale/ls2085ardb/ls2085ardb.c | 17 -----------------
> common/board_f.c | 14 +++++++++++---
> include/configs/ls2085a_common.h | 5 ++---
> 7 files changed, 34 insertions(+), 60 deletions(-)
>
> diff --git a/README b/README
> index 61cbc82..390ee10 100644
> --- a/README
> +++ b/README
> @@ -3889,7 +3889,7 @@ Configuration Settings:
> the RAM base is not zero, or RAM is divided into banks,
> this variable needs to be recalcuated to get the address.
>
> -- CONFIG_SYS_MEM_TOP_HIDE (PPC only):
> +- CONFIG_SYS_MEM_TOP_HIDE:
> If CONFIG_SYS_MEM_TOP_HIDE is defined in the board config
> header,
> this specified memory area will get subtracted from the top
> (end) of RAM and won't get "touched" at all by U-Boot. By
> @@ -5068,8 +5068,8 @@ This firmware often needs to be loaded during U-Boot
> booting.
> - CONFIG_SYS_DEBUG_SERVER_DRAM_BLOCK_MIN_SIZE
> Define minimum DDR size required for debug server image
>
> -- CONFIG_SYS_MEM_TOP_HIDE_MIN
> - Define minimum DDR size to be hided from top of the DDR memory
> +- CONFIG_SYS_MC_RESERV_MEM_ALIGN
> + Define alignment of reserved memory MC requires
Can you make this RESERVE, or RSV or RES? RESERV is hard to look at, like
creat(). :-P
> Reproducible builds
> -------------------
> diff --git a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
> b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
> index 501feb3..01e8f52 100644
> --- a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
> +++ b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
> @@ -628,3 +628,21 @@ void reset_cpu(ulong addr)
> val |= 0x02;
> scfg_out32(rstcr, val);
> }
> +
> +unsigned long board_reserve_ram_top(unsigned long ram_size)
> +{
> + unsigned long ram_top = ram_size;
> +
> +/* Carve the Debug Server private DRAM block from the end of DRAM */
> +#ifdef CONFIG_FSL_DEBUG_SERVER
> + ram_top -= debug_server_get_dram_block_size();
> +#endif
> +
> +/* Carve the MC private DRAM block from the end of DRAM */
> +#ifdef CONFIG_FSL_MC_ENET
> + ram_top -= mc_get_dram_block_size();
> + ram_top &= ~(CONFIG_SYS_MC_RESERV_MEM_ALIGN - 1);
> +#endif
> +
> + return ram_size - ram_top;
> +}
So Layerscape doesn't respect CONFIG_SYS_MEM_TOP_HIDE at all? If you don't
want to add that in (and thus worry about where it should go relative to the
other reasons), there should probably at least be an #error if the symbol is
defined and non-zero.
I think it'd be a bit more straightforward for this to return the new ram_top
rather than the size to be subtracted.
Otherwise this looks good.
-Scott
More information about the U-Boot
mailing list