u-boot/common
Stephen Warren 5e0404ff85 board_f: fix noncached reservation calculation
The current code in reserve_noncached() has two issues:

1) The first update of gd->start_addr_sp always rounds down to a section
start. However, the equivalent calculation in cache.c:noncached_init()
always first rounds up to a section start, then subtracts a section size.
These two calculations differ if the initial value is already rounded to
section alignment.

2) The second update of gd->start_addr_sp subtracts exactly
CONFIG_SYS_NONCACHED_MEMORY, whereas the equivalent calculation in
cache.c:noncached_init() rounds the noncached size up to section
alignment before subtracting it. The two calculations differ if the
noncached region size is not a multiple of the MMU section size.

In practice, one/both of those issues causes a practical problem on
Jetson TX1; U-Boot triggers a synchronous abort during initialization,
likely due to overlapping use of some memory region.

This change fixes both these issues by duplicating the exact calculations
from noncached_init() into reserve_noncached().

However, this fix assumes that gd->start_addr_sp on entry to
reserve_noncached() exactly matches mem_malloc_start on entry to
noncached_init(). I haven't traced the code to see whether it absolutely
guarantees this in all (or indeed any!) cases. Consequently, I added some
comments in the hope that this condition will continue to be true.

Fixes: 5f7adb5b1c ("board_f: reserve noncached space below malloc area")
Cc: Vikas Manocha <vikas.manocha@st.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
2019-08-30 14:17:11 -04:00
..
eeprom SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
init spl: implement stack usage check 2019-08-11 16:43:41 -04:00
spl Merge branch '2019-08-26-master-imports' 2019-08-26 17:45:20 -04:00
android_ab.c common: Implement A/B metadata 2019-07-24 13:16:29 -04:00
autoboot.c env: Move env_set_hex() to env.h 2019-08-11 16:43:41 -04:00
avb_verify.c avb: Fix build when CONFIG_OPTEE_TA_AVB is disabled 2019-08-07 15:31:04 -04:00
bedbug.c Consolidate bool type 2013-04-01 16:33:52 -04:00
bloblist.c Add core support for a bloblist to convey data from SPL 2018-11-26 08:25:32 -05:00
board_f.c board_f: fix noncached reservation calculation 2019-08-30 14:17:11 -04:00
board_info.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
board_r.c board_f: fix noncached reservation calculation 2019-08-30 14:17:11 -04:00
boot_fit.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
bootm_os.c env: Move env_set_hex() to env.h 2019-08-11 16:43:41 -04:00
bootm.c env: Move env_set_hex() to env.h 2019-08-11 16:43:41 -04:00
bootretry.c env: Move env_get() to env.h 2019-08-11 16:43:41 -04:00
bootstage.c bootstage: Allow calling bootstage_mark() before bootstage_init() 2019-04-23 20:26:43 -06:00
bouncebuf.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
cli_hush.c env: Move env_set() to env.h 2019-08-11 16:43:41 -04:00
cli_readline.c cli: handle getch error 2018-09-10 20:20:34 -04:00
cli_simple.c env: Move env_get() to env.h 2019-08-11 16:43:41 -04:00
cli.c env: Move env_get() to env.h 2019-08-11 16:43:41 -04:00
command.c env: Create a new file for environment functions 2019-08-11 16:43:41 -04:00
common_fit.c common: Compile error with CONFIG_MULTI_DTB_FIT and not SPL 2018-11-09 10:44:50 -05:00
console.c env: Rename environment.h to env_internal.h 2019-08-11 19:27:31 -04:00
cros_ec.c sandbox: cros_ec: exynos: Drop use of cros_ec_get_error() 2018-11-20 19:14:22 -07: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 usb: gadget: Do not call board_usb_xxx() directly in USB gadget drivers 2018-12-07 16:31:45 +01:00
dlmalloc.c malloc: Fix memalign not honoring alignment prior to full malloc init 2019-04-23 17:57:27 -04:00
dlmalloc.src Consolidate bool type 2013-04-01 16:33:52 -04:00
edid.c edid: fix edid_get_timing_validate() mode_valid lookup 2019-07-29 19:14:58 +02:00
exports.c board/ls2085rdb: Export functions for standalone AQ FW load apps 2015-07-20 11:44:37 -07:00
fdt_support.c env: Move env_get() to env.h 2019-08-11 16:43:41 -04:00
flash.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
hash.c env: Move env_set() to env.h 2019-08-11 16:43:41 -04:00
hwconfig.c env: Move env_set() to env.h 2019-08-11 16:43:41 -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 env: Move env_set() to env.h 2019-08-11 16:43:41 -04:00
image-fdt.c env: Move env_get_hex() to env.h 2019-08-11 16:43:41 -04:00
image-fit.c fit: Do not automatically decompress ramdisk images 2019-08-07 15:31:05 -04:00
image-sig.c rsa: reject images with unknown padding 2019-06-21 10:07:11 -04:00
image.c image: add new "copro" image type 2019-08-27 11:19:23 +02: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 iotrace: fix behaviour when buffer is full 2018-06-18 14:02:04 -04:00
kallsyms.c Add support for Linux-like kallsysms 2009-06-12 20:45:48 +02:00
Kconfig Convert CONFIG_SHOW_BOOT_PROGRESS to Kconfig 2019-08-02 11:17:58 -04:00
kgdb_stubs.c Use correct spelling of "U-Boot" 2016-02-06 12:00:59 +01:00
kgdb.c Fix spelling of "occurred". 2016-05-02 18:37:09 -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_console.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
lcd.c splash: display splash in DM_VIDEO configurations 2019-06-04 23:20:43 +02:00
log_console.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
log.c log: Add a Kconfig option to set the default log level 2019-02-20 15:21:44 +08:00
lynxkdi.c Remove unnecessary instances of DECLARE_GLOBAL_DATA_PTR 2018-04-27 14:54:48 -04:00
main.c env: Move env_set() to env.h 2019-08-11 16:43:41 -04:00
Makefile common: Implement A/B metadata 2019-07-24 13:16:29 -04:00
malloc_simple.c malloc_simple: Add logging of allocations 2018-11-29 09:30:05 -07:00
memsize.c common/memsize.c: Increase save array for supporting memory size > 4GB 2018-07-10 16:55:59 -04:00
menu.c menu: don't bother going interactive with just one menu item 2019-07-24 13:16:29 -04:00
miiphyutil.c miiphy: Add function to retrieve MDIO bus list head 2018-10-24 14:45:36 -05: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_source.c env: Move env_get() to env.h 2019-08-11 16:43:41 -04:00
splash.c env: Move env_get() to env.h 2019-08-11 16:43:41 -04:00
stdio.c splash: display splash in DM_VIDEO configurations 2019-06-04 23:20:43 +02:00
system_map.c Add support for Linux-like kallsysms 2009-06-12 20:45:48 +02:00
update.c env: Move env_set() to env.h 2019-08-11 16:43:41 -04:00
usb_hub.c env: Move env_get() to env.h 2019-08-11 16:43:41 -04:00
usb_kbd.c env: Move env_get() to env.h 2019-08-11 16:43:41 -04:00
usb_storage.c usb: storage: s/CONFIG_BLK/CONFIG_IS_ENABLED(BLK)/ 2018-11-26 21:19:04 +01:00
usb.c usb: s/CONFIG_DM_USB/CONFIG_IS_ENABLED(DM_USB)/ 2018-11-26 21:19:03 +01:00
xyzModem.c xyz-modem: Fix timeout loop waiting with WATCHDOG 2019-01-15 15:28:51 -05:00