]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
xilinx: common: Do not save fdt_blob to bss section
authorMichal Simek <michal.simek@xilinx.com>
Fri, 4 Sep 2020 14:21:47 +0000 (16:21 +0200)
committerMichal Simek <michal.simek@xilinx.com>
Wed, 23 Sep 2020 08:31:41 +0000 (10:31 +0200)
For SPL flow without specifying address for DT loading DTB is automatically
appended behind U-Boot code. Specifically _end symbol is used. Just behind
it there is place for bss section.
It means if early code is using static variable and there is a write to
this variable DTB file is corrupted if variable is located between DTB
start and end.
In this particular case offset of this variable from bss section start is
very small (0x40) that's why DT is currupted which breaks this boot flow.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
board/xilinx/common/board.c

index eab389d049f2792f1b291aab4bceb7a7ab3c33cb..b0f60c40a5c840bd0799d7747836d0e51aafccc7 100644 (file)
@@ -44,7 +44,7 @@ int zynq_board_read_rom_ethaddr(unsigned char *ethaddr)
 #if defined(CONFIG_OF_BOARD) || defined(CONFIG_OF_SEPARATE)
 void *board_fdt_blob_setup(void)
 {
-       static void *fdt_blob;
+       void *fdt_blob;
 
 #if !defined(CONFIG_VERSAL_NO_DDR) && !defined(CONFIG_ZYNQMP_NO_DDR)
        fdt_blob = (void *)CONFIG_XILINX_OF_BOARD_DTB_ADDR;