From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heinrich Schuchardt Date: Thu, 18 Jun 2020 12:48:55 +0200 Subject: [PATCH v3] common: fdt: Remove additional 4k space for fdt allocation In-Reply-To: References: Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 6/18/20 10:51 AM, Michal Simek wrote: > From: Ashok Reddy Soma > > 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 > Signed-off-by: Michal Simek > --- > > 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); >