From: Michal Simek Date: Thu, 17 Mar 2022 14:25:31 +0000 (+0100) Subject: arm64: versal: Do not place u-boot to reserved memory location X-Git-Tag: baikal/mips/sdk5.9~3^2~122^2~18 X-Git-Url: https://git.baikalelectronics.ru/sdk/?a=commitdiff_plain;h=44e3463760dd86275c4dc1cdc4c27b5ba06fd3d3;p=uboot.git arm64: versal: Do not place u-boot to reserved memory location Versal can also have reserved space in DT which u-boot has to avoid to placing self to that location. The same change was done in ZynqMP by commit 043ef21b4b64 ("zynqmp: Do not place u-boot to reserved memory location") and also for microblaze by commit 877dd4c0c0ed ("microblaze: Do not place u-boot to reserved memory location"). The patch was tested by adding reserved-memory node to DT and check via bdinfo back. Signed-off-by: Michal Simek Link: https://lore.kernel.org/r/15426fa6d64835dd23c5c8c12bbfc97306fb6098.1647527129.git.michal.simek@xilinx.com --- diff --git a/board/xilinx/versal/board.c b/board/xilinx/versal/board.c index 299e128f7b..9940f2aeb3 100644 --- a/board/xilinx/versal/board.c +++ b/board/xilinx/versal/board.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -249,6 +250,25 @@ int dram_init(void) return 0; } +ulong board_get_usable_ram_top(ulong total_size) +{ + phys_size_t size; + phys_addr_t reg; + struct lmb lmb; + + /* found enough not-reserved memory to relocated U-Boot */ + lmb_init(&lmb); + lmb_add(&lmb, gd->ram_base, gd->ram_size); + boot_fdt_add_mem_rsv_regions(&lmb, (void *)gd->fdt_blob); + size = ALIGN(CONFIG_SYS_MALLOC_LEN + total_size, MMU_SECTION_SIZE); + reg = lmb_alloc(&lmb, size, MMU_SECTION_SIZE); + + if (!reg) + reg = gd->ram_top - size; + + return reg + size; +} + void reset_cpu(void) { }