u-boot/arch/arm
Stephen Warren 0797f7f0b7 ARM: tegra: reserve unmapped RAM so EFI doesn't use it
Tegra U-Boot ensures that board_get_usable_ram_top() never returns a value
over 4GB, since some peripherals can't access such addresses. However, on
systems with more than 2GB of RAM, RAM bank 1 does describe this extra
RAM, so that Linux (or whatever OS) can use it, subject to DMA
limitations. Since board_get_usable_ram_top() points at the top of RAM
bank 0, the memory locations describes by RAM bank 1 are not mapped by
U-Boot's MMU configuration, and so cannot be used for anything.

For some completely inexplicable reason, U-Boot's EFI support ignores the
value returned by board_get_usable_ram_top(), and EFI memory allocation
routines will return values above U-Boot's RAM top. This causes U-Boot to
crash when it accesses that RAM, since it isn't mapped by the MMU. One
use-case where this happens is TFTP download of a file on Jetson TX1
(p2371-2180).

This change explicitly tells the EFI code that this extra RAM should not
be used, thus avoiding the crash.

A previous attempt to make EFI honor board_get_usable_ram_top() was
rejected. So, this patch will need to be replicated for any board that
implements board_get_usable_ram_top().

Fixes: aa909462d0 ("efi_loader: efi_allocate_pages is too restrictive")
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
2018-09-23 21:55:29 +02:00
..
cpu efi_loader: simplify ifdefs 2018-09-23 21:55:29 +02:00
dts board: turris_mox: Fixup U-Boot's device tree if PCIe connected 2018-09-19 09:00:39 +02:00
include imx: imx6ull: fix pinmux input_val for uart5 rx pin 2018-09-14 15:22:52 +02:00
lib arm: K3: Update _start instruction 2018-09-11 08:32:55 -04:00
mach-aspeed regmap: change regmap_init_mem() to take ofnode instead udevice 2018-05-07 15:49:51 -04:00
mach-at91 ARM: CPU: arm926ejs: Consolidate cache routines to common file 2018-09-10 21:19:16 -04:00
mach-bcm283x efi_loader: Convert runtime reset from switch to if statements 2018-06-14 10:52:14 +02:00
mach-bcmstb board: arm: Add support for Broadcom BCM7260 2018-09-10 21:19:31 -04:00
mach-davinci Revert "ARM: da850evm_direct_nor_defconfig: Enable DM_SERIAL" 2018-09-14 13:52:15 -04:00
mach-exynos Kconfig: Sort bool, default, select and imply options 2018-07-30 07:18:48 -04:00
mach-highbank SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
mach-imx pico-imx6ul: Convert to SPL 2018-09-14 15:04:24 +02:00
mach-integrator env: Convert CONFIG_ENV_IS_IN... to a choice 2017-08-15 20:50:01 -04:00
mach-k3 board: ti: am654: a53: Add initial support for am654 2018-09-11 08:32:55 -04:00
mach-keystone SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
mach-kirkwood Convert CONFIG_MII et al to Kconfig 2018-08-17 13:03:54 -04:00
mach-meson dm: Change CMD_DM enabling 2018-07-30 07:18:48 -04:00
mach-mvebu ARM: mach-mvebu: handle fall-back to UART boot 2018-09-19 08:59:26 +02:00
mach-omap2 ARM: mach-omap2: Don't initialize I2C if DM_I2C is enabled 2018-09-11 21:39:02 -04:00
mach-orion5x ARM: orion5x: fix use of callee-saved registers in lowloevel_init 2018-06-07 09:12:26 -04:00
mach-owl board: Add uCRobotics Bubblegum-96 board support 2018-07-09 15:25:23 -04:00
mach-qemu Kconfig: Sort bool, default, select and imply options 2018-07-30 07:18:48 -04:00
mach-rmobile ARM: rmobile: Enable USB PHY on Gen2 2018-08-14 11:31:25 +02:00
mach-rockchip dm: convert device_get_global_by_of_offset() to device_get_global_by_ofnode() 2018-08-21 16:21:37 +02:00
mach-s5pc1xx SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
mach-snapdragon snapdragon: added MAC generation functions 2018-08-13 14:04:04 -04:00
mach-socfpga socfpga: stratix10: fix sdram_calculate_size 2018-09-15 03:17:01 +02:00
mach-sti board: Add STMicroelectronics STiH410-B2260 support 2017-03-14 20:40:21 -04:00
mach-stm32 Kconfig: Sort bool, default, select and imply options 2018-07-30 07:18:48 -04:00
mach-stm32mp stm32mp1: activate MISC support in SPL 2018-07-20 15:55:05 -04:00
mach-sunxi sunxi: A64: fix default DRAM_ODT_EN symbol 2018-08-13 16:47:38 +05:30
mach-tegra ARM: tegra: reserve unmapped RAM so EFI doesn't use it 2018-09-23 21:55:29 +02:00
mach-uniphier ARM: uniphier: remove ad-hoc clock enabling for EHCI 2018-09-11 20:37:19 +09:00
mach-versatile SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
mach-zynq Kconfig: Move config SYS_MALLOC_LEN to Kconfig for zynq 2018-08-06 08:44:35 +02:00
mach-zynqmp-r5 arm: zynqmp: Add ZynqMP minimal R5 support 2018-05-11 09:38:23 +02:00
thumb1/include/asm/proc-armv SPDX: Convert a few files that were missed before 2018-05-10 20:38:35 -04:00
config.mk efi_loader: Rename sections to allow for implicit data 2018-07-25 14:57:44 +02:00
Kconfig arm: K3: Add initial support for TI's K3 generation of SoCs 2018-09-11 08:32:55 -04:00
Kconfig.debug
Makefile arm: K3: Add initial support for TI's K3 generation of SoCs 2018-09-11 08:32:55 -04:00