diff mbox series

xilinx: Setup bootm variables

Message ID 4f41b6650930e51fa0ad0649835cf3670a2cada5.1594380012.git.michal.simek@xilinx.com
State Accepted
Commit c8da6513c054c150640e8ad12185bd53ae1852fc
Headers show
Series xilinx: Setup bootm variables | expand

Commit Message

Michal Simek July 10, 2020, 11:20 a.m. UTC
On system with PL DDR which is placed before PS DDR in DT
env_get_bootm_size() and env_get_bootm_low() without specifying bootm_low
and bootm_size variables are taking by default gd->bd->bi_dram[0].start and
gd->bd->bi_dram[0].size. As you see 0 means bank 0 which doesn't need to be
PS ddr and even can be memory above 39bit VA which is what U-Boot supports
now.
That's why setup bootm variables based on ram_base/ram_size setting to make
sure that boot images are placed to the same location as U-Boot is placed.
This location should be by default location where OS can boot from.

Signed-off-by: Michal Simek <michal.simek at xilinx.com>
---

 board/xilinx/common/board.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Michal Simek July 24, 2020, 12:14 p.m. UTC | #1
pá 10. 7. 2020 v 13:20 odesílatel Michal Simek <michal.simek@xilinx.com> napsal:
>

> On system with PL DDR which is placed before PS DDR in DT

> env_get_bootm_size() and env_get_bootm_low() without specifying bootm_low

> and bootm_size variables are taking by default gd->bd->bi_dram[0].start and

> gd->bd->bi_dram[0].size. As you see 0 means bank 0 which doesn't need to be

> PS ddr and even can be memory above 39bit VA which is what U-Boot supports

> now.

> That's why setup bootm variables based on ram_base/ram_size setting to make

> sure that boot images are placed to the same location as U-Boot is placed.

> This location should be by default location where OS can boot from.

>

> Signed-off-by: Michal Simek <michal.simek@xilinx.com>

> ---

>

>  board/xilinx/common/board.c | 3 +++

>  1 file changed, 3 insertions(+)

>

> diff --git a/board/xilinx/common/board.c b/board/xilinx/common/board.c

> index 0469e2e7ac9b..3bca3a25a97b 100644

> --- a/board/xilinx/common/board.c

> +++ b/board/xilinx/common/board.c

> @@ -86,5 +86,8 @@ int board_late_init_xilinx(void)

>         initrd_hi = round_down(initrd_hi, SZ_16M);

>         env_set_addr("initrd_high", (void *)initrd_hi);

>

> +       env_set_addr("bootm_low", (void *)gd->ram_base);

> +       env_set_addr("bootm_size", (void *)gd->ram_size);

> +

>         return 0;

>  }

> --

> 2.27.0

>


Applied.
M

-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Xilinx Microblaze
Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP ARM64 SoCs
U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP/Versal SoCs
diff mbox series

Patch

diff --git a/board/xilinx/common/board.c b/board/xilinx/common/board.c
index 0469e2e7ac9b..3bca3a25a97b 100644
--- a/board/xilinx/common/board.c
+++ b/board/xilinx/common/board.c
@@ -86,5 +86,8 @@  int board_late_init_xilinx(void)
 	initrd_hi = round_down(initrd_hi, SZ_16M);
 	env_set_addr("initrd_high", (void *)initrd_hi);
 
+	env_set_addr("bootm_low", (void *)gd->ram_base);
+	env_set_addr("bootm_size", (void *)gd->ram_size);
+
 	return 0;
 }