[PATCH v3] common: fdt: Remove additional 4k space for fdt allocation
Heinrich Schuchardt
xypron.glpk at gmx.de
Thu Jun 18 12:48:55 CEST 2020
On 6/18/20 10:51 AM, Michal Simek wrote:
> From: Ashok Reddy Soma <ashok.reddy.soma at xilinx.com>
>
> There is no technical reason to add additional 4k space for FDT. This space
> is completely unused and just increase memory requirements. This is
> problematic on systems with limited memory resources as Xilinx Zynq
> CSE/ZynqMP mini and Versal mini configurations.
>
> The patch is removing additional 4k space.
>
> EFI code is using copy_fdt() which copy FDT to different location.
> And all boot commands in case of using U-Boot's FDT pointed by
> $fdtcontroladdr are copying FDT to different locations by
> image_setup_libfdt().
> That's why in proper flow none should modified DTB used by U-Boot that's
> why there is no need for additional space.
>
> Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma at xilinx.com>
> Signed-off-by: Michal Simek <michal.simek at xilinx.com>
> ---
>
> Changes in v3:
> - Remove alignment change and keep it as 32
>
> Changes in v2:
> - Change subject (was: common: Add Kconfig option for FDT mem alignment)
> - Remove Kconfig symbol
> - Extend description
>
> I have tested it on zcu104.
> Outcome from v2 review was to remove that alignment part and if that works
> on all boards then it is ready to go. The best as early as possible.
>
> Tom: Would be good to add it to your queue for testing to spot any issue
> earlier.
>
> ---
> common/board_f.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/common/board_f.c b/common/board_f.c
> index 01194eaa0e4d..dcad551ae434 100644
> --- a/common/board_f.c
> +++ b/common/board_f.c
> @@ -537,7 +537,7 @@ static int reserve_fdt(void)
> * will be relocated with other data.
> */
> if (gd->fdt_blob) {
> - gd->fdt_size = ALIGN(fdt_totalsize(gd->fdt_blob) + 0x1000, 32);
> + gd->fdt_size = ALIGN(fdt_totalsize(gd->fdt_blob), 32);
reserve_stack_aligned() already rounds the size up to a multiple of 16.
The ALIGN() here is simply wasting 16 bytes of memory in half of the cases.
Best regards
Heinrich
>
> gd->start_addr_sp = reserve_stack_aligned(gd->fdt_size);
> gd->new_fdt = map_sysmem(gd->start_addr_sp, gd->fdt_size);
>
More information about the U-Boot
mailing list