u-boot/common
Baruch Siach 7f98b4eeee image: don't exceed gd->ram_top in bootm_size
When board_get_usable_ram_top() limits gd->ram_top, env_get_bootm_size()
must not exceed that limit. Otherwise, boot_relocate_fdt() might put fdt
out of the allowed RAM range.

The similar commit 8ce1f10cf2 ("ARM: bootm: take into account
gd->ram_top") exposed this bug.

This fixes boot on Armada 8040 based Clearfog GT-8K where ram_top is set
to 0x80000000 (2GB), but bi_dram[0].size might be up to 0xc0000000
(3GB). Note the relocated fdt address (0xbfff4000) in the console output
listed below:

Found /extlinux/extlinux.conf
Retrieving file: /extlinux/extlinux.conf
62 bytes read in 21 ms (2 KiB/s)
1:	linux
Retrieving file: /extlinux/Image
13740544 bytes read in 1266 ms (10.4 MiB/s)
Retrieving file: /extlinux/armada-8040-clearfog-gt-8k.dtb
33368 bytes read in 31 ms (1 MiB/s)
   Booting using the fdt blob at 0x4f00000
   Loading Device Tree to 00000000bfff4000, end 00000000bffff257 ... "Synchronous Abort" handler, esr 0x96000045
elr: 000000000006e1cc lr : 0000000000068fd8 (reloc)
elr: 000000007ffa91cc lr : 000000007ffa3fd8
x0 : ffffffffffffffff x1 : 00000000bfffc258
x2 : 0000000000000000 x3 : ffffffffffff7da7
x4 : 0000000004f08258 x5 : 00000000bfff4000
x6 : 00000000bfff4000 x7 : 000000000000000f
x8 : 000000007fb23bf8 x9 : 0000000000000008
x10: 00000000bffff257 x11: 00000000bffff257
x12: 0000000000000000 x13: fffffffffffff000
x14: 00000000bfff4000 x15: 0000000000000021
x16: 000000007ff7bc38 x17: 0000000000000000
x18: 000000007fb2add0 x19: 00000000bfff4000
x20: 0000000004f00000 x21: 000000000000b258
x22: 0000000058820000 x23: 0000000000000010
x24: 000000007ffe3c40 x25: 000000007fb23cb8
x26: 00000000c0000000 x27: 0000000000000000
x28: 000000007fc3fd50 x29: 000000007fb23bd0

Code: 54000061 aa0603e0 d65f03c0 38606882 (38206822)
Resetting CPU ...

Thanks to Patrice CHOTARD who directed me to the right way.

Signed-off-by: Baruch Siach <baruch@tkos.co.il>
2020-08-27 11:26:58 -04:00
..
eeprom SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
init common: Drop init.h from common header 2020-05-18 17:33:33 -04:00
spl spl: usb: Only init usb once 2020-08-11 20:34:46 +05:30
android_ab.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
autoboot.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
avb_verify.c avb: Make AVB independent of fastboot 2020-08-24 14:11:13 -04:00
bedbug.c common: Drop asm/ptrace.h from common header 2020-05-18 21:19:23 -04:00
bloblist.c bloblist: Zero records when adding 2020-02-05 19:33:46 -07:00
board_f.c board_f: Remove dead code from init_func_i2c 2020-08-22 08:54:51 -06:00
board_info.c common: Drop init.h from common header 2020-05-18 17:33:33 -04:00
board_r.c xen: pvblock: Add initial support for para-virtualized block driver 2020-08-14 15:18:30 -04:00
boot_fit.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
bootm.c common: bootm: add checks to verify if ramdisk / fdtimage overlaps OS image 2020-07-17 08:51:01 -04:00
bootm_os.c efi_loader: returning from UEFI FIT images 2020-07-22 12:32:42 +02:00
bootretry.c common: Move get_ticks() function out of common.h 2019-12-02 18:23:13 -05:00
bootstage.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
bouncebuf.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
cli.c command: Remove the cmd_tbl_t typedef 2020-05-18 18:36:55 -04:00
cli_hush.c command: Remove the cmd_tbl_t typedef 2020-05-18 18:36:55 -04:00
cli_readline.c command: Remove the cmd_tbl_t typedef 2020-05-18 18:36:55 -04:00
cli_simple.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
command.c command: Drop #ifdef for MEM_SUPPORT_64BIT_DATA 2020-07-08 17:21:46 -04:00
common_fit.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
console.c console: Always define the console-recording functions 2020-08-07 22:31:32 -04:00
cros_ec.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
ddr_spd.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
dfu.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
dlmalloc.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
dlmalloc.src Consolidate bool type 2013-04-01 16:33:52 -04:00
edid.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
exports.c command: Remove the cmd_tbl_t typedef 2020-05-18 18:36:55 -04:00
fdt_region.c lib: libfdt: fdt_region: avoid NULL pointer access 2020-07-25 14:46:57 -06:00
fdt_support.c fdt_support: skip MTD node with "disabled" in fdt_fixup_mtdparts() 2020-07-25 14:46:57 -06:00
flash.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
hash.c common: hash: Remove a debug printf statement 2020-06-16 11:36:30 -04:00
hwconfig.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
image-android-dt.c common: image-android-dt: Fix logic in print fdt info routine 2019-08-07 15:31:05 -04:00
image-android.c image: android: fix abootimg support 2020-06-02 13:06:12 -04:00
image-cipher.c common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
image-fdt.c find dtb in android boot image with header version 2 during bootm 2020-07-28 19:30:39 -06:00
image-fit-sig.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
image-fit.c Add support for SHA384 and SHA512 2020-06-12 13:14:07 -04:00
image-sig.c Add support for SHA384 and SHA512 2020-06-12 13:14:07 -04:00
image.c image: don't exceed gd->ram_top in bootm_size 2020-08-27 11:26:58 -04:00
iomux.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
iotrace.c common: Drop linux/bug.h from common header 2020-05-18 21:19:23 -04:00
kallsyms.c Add support for Linux-like kallsysms 2009-06-12 20:45:48 +02:00
Kconfig avb: Make AVB independent of fastboot 2020-08-24 14:11:13 -04:00
kgdb.c common: Drop asm/ptrace.h from common header 2020-05-18 21:19:23 -04:00
kgdb_stubs.c common: Drop asm/ptrace.h from common header 2020-05-18 21:19:23 -04:00
lcd.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
lcd_console.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
lcd_console_rotation.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
lcd_simplefb.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
log.c log: don't show function by default 2020-07-09 18:57:22 -06:00
log_console.c log: use BIT() instead of 1 << 2020-07-09 18:57:22 -06:00
log_syslog.c log: use BIT() instead of 1 << 2020-07-09 18:57:22 -06:00
lynxkdi.c Remove unnecessary instances of DECLARE_GLOBAL_DATA_PTR 2018-04-27 14:54:48 -04:00
main.c common: Drop bootstage.h from common header 2020-05-18 17:33:33 -04:00
Makefile fdt_region: move fdt_region.c to common/ from lib/libfdt/ 2020-04-26 14:23:55 -06:00
malloc_simple.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
memsize.c common: Move RAM-sizing functions to init.h 2020-01-24 23:06:49 +05:30
menu.c menu: add support for client defined statusline function 2020-05-07 09:01:42 -04:00
miiphyutil.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
s_record.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
splash.c splash: Fix build warning on 64 bits CPU 2020-06-28 01:03:09 +02:00
splash_source.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
stdio.c stdio: Tidy up the coding style 2020-08-23 13:43:10 -04:00
system_map.c Add support for Linux-like kallsysms 2009-06-12 20:45:48 +02:00
update.c common: Move the image globals into image.h 2020-01-24 23:06:49 +05:30
usb.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
usb_hub.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
usb_kbd.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
usb_storage.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
xyzModem.c spl: Allow tiny printf() to be controlled in SPL and TPL 2019-10-08 13:57:45 +08:00