u-boot/board
Andre Przywara c47bb10a4d vexpress64: also consider DTB pointer in x1
Commit c0fce929564f("vexpress64: fvp: enable OF_CONTROL") added code to
consider a potential DTB address being passed in the x0 register, or
revert to the built-in DTB otherwise.
The former case was used when using the boot-wrapper, to which we sell
U-Boot as a Linux kernel. The latter was meant for TF-A, for which we
couldn't find an easy way to use the DTB it uses itself. We have some
quirk to filter for a valid DTB, as TF-A happens to pass a pointer to
some special devicetree blob in x0 as well.

Now the TF-A case is broken, when enabling proper emulation of secure
memory (-C bp.secure_memory=1). TF-A carves out some memory at the top
of the first DRAM bank for its own purposes, and configures the
TrustZone DRAM controller to make this region secure-only. U-Boot will
then hang when it tries to relocate itself exactly to the end of DRAM.
TF-A announces this by carving out that region of the /memory node, in
the DT it passes on to BL33 in x1, but we miss that so far.

Instead of repeating this carveout in our DT copy, let's try to look for
a DTB at the address x1 points to as well. This will let U-Boot pick up
the DTB provided by TF-A, which has the correct carveout in place,
avoiding the hang.
While we are at it, make the detection more robust: the length test (is
the DT larger than 256 bytes?) is too fragile, in fact the TF-A port for
a new FVP model already exceeds this. So we test x1 first, consider 0
an invalid address, and also require a /memory node to detect a valid DTB.

And for the records:
Some asking around revealed what is really going on with TF-A and that
ominous DTB pointer in x0: TF-A expects EDK-2 as its non-secure payload
(BL33), and there apparently was some long-standing ad-hoc boot protocol
defined just between the two: x0 would carry the MPIDR register value of
the boot CPU, and the hardware DTB address would be stored in x1.
Now the MPIDR of CPU 0 is typically 0, plus bit 31 set, which is defined
as RES1 in the ARMv7 and ARMv8 architectures. This gives 0x80000000,
which is the same value as the address of the beginning of DRAM (2GB).
And coincidentally TF-A put some DTB structure exactly there, for its
own purposes (passing it between stages). So U-Boot was trying to use
this DTB, which requires the quirk to check for its validity.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Tested-by: Peter Hoyes <peter.hoyes@arm.com>
2022-09-29 10:10:39 -04:00
..
abilis/tb100 reset: Remove addr parameter from reset_cpu() 2021-03-02 14:03:02 -05:00
advantech imx: imx8mp_rsb3720a1: fix incorrect ifdef check on SPL_MMC 2022-08-04 15:32:20 -04:00
alliedtelesis arm: mvebu: mbus: Fix mbus driver to work also after U-Boot relocation 2022-08-23 12:35:37 +02:00
altera Merge branch '2021.04-rc' of https://github.com/lftan/u-boot 2021-01-15 07:55:11 -05:00
amarula/vyasa-rk3288 common: Move serial functions out of common.h 2019-12-02 18:23:11 -05:00
amlogic MAINTAINERS: Update email of Neil Armstrong 2022-08-20 16:17:50 -04:00
AndesTech/ax25-ae350 riscv: ae350: Fix XIP config boot failure 2022-08-11 18:46:07 +08:00
aries/mcvevk
aristainetos led: Drop led_default_state() 2022-04-28 09:26:44 -04:00
armadeus/opos6uldev opos6uldev: Migrate to using CONFIG_EXTRA_ENV_TEXT 2022-06-28 17:11:48 -04:00
armltd vexpress64: also consider DTB pointer in x1 2022-09-29 10:10:39 -04:00
aspeed configs: aspeed: Add defconfig for AST2600 EVB 2021-01-18 15:23:06 -05:00
astro/mcf5373l fpga: Remove CONFIG_FPGA_COUNT 2022-06-28 17:11:48 -04:00
atmel net: ks8851_mll: Remove legacy non-DM_ETH code and callers 2022-08-20 21:18:15 -04:00
avionic-design common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
beacon nxp: Make board/freescale/common/Kconfig safe to include once in arch/Kconfig 2022-07-05 17:03:02 -04:00
beckhoff/mx53cx9020 arm: Disable ATAGs support 2021-09-07 16:22:30 -04:00
birdland/bav335x arm: Remove bav335x board 2020-07-09 20:58:05 +05:30
bitmain/antminer_s9 xilinx: Introduce board_late_init_xilinx() 2020-04-27 13:57:17 +02:00
bluewater/gurnard arm: Remove snapper9260 board 2022-08-12 16:10:50 -04:00
bosch bosch: Add initial board support for ACC 2022-05-20 12:36:48 +02:00
boundary/nitrogen6x net: phy: don't require PHY interface mode during PHY creation 2022-04-10 08:44:13 +03:00
broadcom arm: bcmbca: introduce the bcmbca architecture and 47622 SOC 2022-06-10 13:37:32 -04:00
bsh bsh: imx6ulz_smm_m2: Add imx6ulz BSH SMM M2 boards 2022-09-18 22:56:18 +02:00
bticino/mamoj common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
buffalo/lsxl board: lsxl: update the README 2022-08-23 12:40:34 +02:00
BuR board/BuR/*: replace maintainer of BuR boards 2022-07-01 16:00:36 -04:00
BuS/eb_cpu5282 global: Convert simple_strtoul() with decimal to dectoul() 2021-08-02 13:32:14 -04:00
cadence/xtfpga Finish conversion of CONFIG_SYS_CLK_FREQ to Kconfig 2021-12-27 16:20:18 -05:00
calao/usb_a9263 common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
cavium/thunderx pci: Drop pci_init_board() 2021-08-06 08:26:48 -04:00
cei/cei-tk1-som
chipspark/popmetal_rk3288 board: rk3288: add more DT files to MAINTAINERS 2022-04-18 11:25:13 +08:00
cloudengines arm: kirkwood: Pogoplug E02 : Convert Ethernet to Driver Model 2022-02-10 07:12:16 +01:00
cobra5272 Convert CONFIG_SYS_FLASH_ERASE_TOUT et al to Kconfig 2022-08-04 16:18:47 -04:00
compal/paz00 common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
compulab arm: Remove cm_t335 board 2022-08-20 21:18:15 -04:00
comtrend
congatec arch/Kconfig.nxp: Re-organize slightly 2022-07-05 17:04:01 -04:00
coreboot x86: Correct the coreboot header file in MAINTAINERS 2022-03-14 15:20:40 +08:00
cortina armv8: Fix and simplify branch_if_master/branch_if_slave 2022-03-02 13:59:29 -05:00
cssi linker_lists: Rename sections to remove . prefix 2022-06-23 12:58:18 -04:00
CZ.NIC arm: mvebu: turris_omnia: Fix setting switch CONFIG pins on new board design 2022-09-18 12:41:57 +02:00
d-link/dns325 common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
data_modul/imx8mm_edm_sbc ARM: imx: Deduplicate i.MX8M SNVS LPGPR unlock 2022-09-20 18:30:02 +02:00
davinci/da8xxevm linker_lists: Rename sections to remove . prefix 2022-06-23 12:58:18 -04:00
devboards/dbm-soc1
dfi scripts: Makefile.lib: generate dsdt_generated.c instead of dsdt.c 2022-02-25 11:21:24 -05:00
dhelectronics ARM: imx: Deduplicate i.MX8M SNVS LPGPR unlock 2022-09-20 18:30:02 +02:00
ea imx: Don't define __ASSEMBLY__ in source files 2022-02-08 23:07:58 -05:00
ebv/socrates
eets/pdu001 serial: Replace CONFIG_DEBUG_UART_BASE by CONFIG_VAL(DEBUG_UART_BASE) 2022-06-06 18:01:21 -04:00
efi efi: Add video support to the app 2021-11-07 18:36:55 +01:00
egnite/ethernut5 common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
elgin/elgin_rv1108 common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
embest/mx6boards serial: Rename SERIAL_SUPPORT to SERIAL 2021-09-04 12:26:01 -04:00
emulation qemu-ppce500: Move CONFIG_SYS_PCI_MAP_{START, END} to board code 2022-07-05 17:05:00 -04:00
engicam nxp: Make board/freescale/common/Kconfig safe to include once in arch/Kconfig 2022-07-05 17:03:02 -04:00
esd/meesc global: Convert simple_strtoul() with hex to hextoul() 2021-08-02 13:32:14 -04:00
firefly rockchip: rk3308: fix rockchip_dnl_key_pressed() on roc-cc 2022-09-04 20:00:38 +08:00
freescale u-boot-imx-20220919 2022-09-19 08:38:32 -04:00
friendlyarm Rename CONFIG_PWM to CONFIG_PWM_S5P and move to Kconfig 2022-07-05 17:03:01 -04:00
gardena Audit <flash.h> inclusion 2022-08-04 16:18:47 -04:00
gateworks board: gateworks: venice: add fixup for GW73xx-C+ 2022-09-18 22:56:09 +02:00
gdsys powerpc: Move CONFIG_SYS_DDR_SIZE to CONFIG_SYS_SDRAM_SIZE 2022-08-04 16:18:47 -04:00
ge Remove CONFIG_BOARDNAME and CONFIG_BOARD_NAME 2022-04-01 10:28:46 -04:00
geekbuying/geekbox
google chameleonv3: Add MAINTAINERS file 2022-07-01 15:55:54 -04:00
grinn Convert CONFIG_SKIP_LOWLEVEL_INIT et al to Kconfig 2021-08-31 17:47:49 -04:00
hardkernel/odroid_go2 rockchip: board: add Hardkernel Odroid Go2 board 2020-07-22 20:21:23 +08:00
highbank sandbox: Remove OF_HOSTFILE 2021-10-27 16:38:26 -04:00
hisilicon WS cleanup: remove trailing empty lines 2021-09-30 08:08:56 -04:00
hoperun/hihope-rzg2 arm: use the correct prototype for reset_cpu function 2021-07-28 19:30:22 -04:00
hpe/gxp gxp: Convert to text file environment 2022-06-22 21:30:05 -04:00
huawei/hg556a
imgtec malta: Switch to using CONFIG_SYS_SDRAM_SIZE 2022-08-04 16:18:47 -04:00
intel board: .gitignore: replace dsdt.c by dsdt_generated.c 2022-03-08 08:42:43 -05:00
inversepath/usbarmory arm: Disable ATAGs support 2021-09-07 16:22:30 -04:00
iomega/iconnect arm: kirkwood: iConnect : Add Ethernet support 2022-02-10 07:12:16 +01:00
is1
isee igep00x0: Disable networking 2022-08-20 21:18:15 -04:00
k+p led: Drop led_default_state() 2022-04-28 09:26:44 -04:00
keymile powerpc: remove support for kmtergr1 and MPC8309 2022-08-20 22:45:00 -04:00
kobol/helios4 arm: mvebu: Load U-Boot proper binary in SPL code based on kwbimage header 2021-07-31 09:59:58 +02:00
kontron board: sl28: support dynamic prompts 2022-09-06 09:10:41 +08:00
kosagi/novena common: Drop display_options.h from common header 2022-08-10 13:46:55 -04:00
l+g/vinco vinco: Remove legacy non-DM_ETH code 2022-08-20 21:18:15 -04:00
LaCie arm: Remove edminiv2 board 2022-08-20 21:18:15 -04:00
lego/ev3 legoev3: Migrate to DM_I2C 2022-07-08 17:57:34 -04:00
lg/sniper arm: Disable ATAGs support 2021-09-07 16:22:30 -04:00
liebherr arm: xea: config: Provide special defconfig for a single binary u-boot 2022-02-05 13:38:39 +01:00
logicpd Audit <flash.h> inclusion 2022-08-04 16:18:47 -04:00
Marvell arm: mvebu: Espressobin: When emmc is not present disable it also in OF_LIVE 2022-09-13 06:38:08 +02:00
maxbcm arm: mvebu: mbus: Fix mbus driver to work also after U-Boot relocation 2022-08-23 12:35:37 +02:00
mediatek mips: mtmips: add two reference boards for mt7621 2022-07-13 23:03:37 +02:00
menlo ARM: imx: Deduplicate i.MX8M SNVS LPGPR unlock 2022-09-20 18:30:02 +02:00
microchip riscv: Update Microchip MPFS Icicle Kit support 2021-12-02 16:43:52 +08:00
mikrotik/crs3xx-98dx3236 common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
mqmaker/miqi_rk3288 board: rk3288: add more DT files to MAINTAINERS 2022-04-18 11:25:13 +08:00
mscc led: Drop led_default_state() 2022-04-28 09:26:44 -04:00
myir/mys_6ulx common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
netgear common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
nokia/rx51 Nokia RX-51: Move board required options from defconfig to Kconfig 2022-08-20 16:18:40 -04:00
novtech/meerkat96 imx: Don't define __ASSEMBLY__ in source files 2022-02-08 23:07:58 -05:00
nuvoton/poleg_evb arm: nuvoton: Add support for Nuvoton NPCM750 BMC 2022-05-05 09:28:47 -04:00
nvidia ARM: tegra: Refactor DT update helpers 2021-10-13 14:18:30 -07:00
olimex/mx23_olinuxino mx23_olinuxino: convert MMC to driver model 2021-04-08 23:59:50 +02:00
opalkelly/zynq WS cleanup: remove trailing empty lines 2021-09-30 08:08:56 -04:00
openpiton/riscv64 riscv: dts: add OpenPiton RISC-V board dts support 2021-07-07 20:34:02 +08:00
out4/o4-imx6ull-nano imx: Don't define __ASSEMBLY__ in source files 2022-02-08 23:07:58 -05:00
phytec Restore pcm051_rev3_defconfig config 2022-08-20 16:40:14 -04:00
phytium arm: add initial support for the Phytium Pomelo Board 2022-03-10 13:57:04 -05:00
pine64 rockchip: Add initial support for the Pinebook Pro laptop from Pine64. 2020-05-31 22:22:07 +08:00
purism/librem5 board: purism: add the Purism Librem5 phone 2022-09-18 22:56:10 +02:00
qca Convert CONFIG_SKIP_LOWLEVEL_INIT et al to Kconfig 2021-08-31 17:47:49 -04:00
qualcomm board: qualcomm: Add support for QCS404 EVB 2022-07-25 13:02:04 -04:00
radxa board: rk3288: add more DT files to MAINTAINERS 2022-04-18 11:25:13 +08:00
raidsonic/ib62x0 common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
raspberrypi/rpi Prepare v2022.01-rc4 2021-12-20 17:12:04 -05:00
renesas ARM: renesas: Propagate RPC-IF enablement to subsequent software 2022-09-02 13:25:01 +02:00
rikomagic/mk808 rockchip: rk3066: add Rikomagic MK808 board 2022-04-18 11:25:13 +08:00
rockchip board: rk3288: add more DT files to MAINTAINERS 2022-04-18 11:25:13 +08:00
ronetix at91: Remove unused LED code 2022-04-08 09:05:20 -04:00
sagem/f@st1704
samsung smdkc100: Remove legacy non-DM_ETH code 2022-08-20 21:18:15 -04:00
sandbox addrmap: Support on sandbox 2022-07-26 02:30:56 -06:00
Seagate arm: kirkwood: Dockstar : Add DM Ethernet 2022-02-10 07:12:16 +01:00
seeed imx: Add SeeedStudio NPI-IMX6ULL Support 2021-06-09 13:34:18 +02:00
sfr/nb4_ser
siemens Audit <flash.h> inclusion 2022-08-04 16:18:47 -04:00
sifive riscv: sifive: Fix OF_BOARD boot failure 2022-01-07 09:30:44 -05:00
silinux/ek874 arm: use the correct prototype for reset_cpu function 2021-07-28 19:30:22 -04:00
sipeed/maix k210: use the board vendor name rather than the marketing name 2022-03-15 17:43:11 +08:00
socionext/developerbox board: synquacer: developerbox: Remove Masami from MAINTAINERS 2022-05-05 09:28:48 -04:00
socrates Audit <flash.h> inclusion 2022-08-04 16:18:47 -04:00
softing imx: Don't define __ASSEMBLY__ in source files 2022-02-08 23:07:58 -05:00
solidrun mx6cuboxi: fix board detection while patching device-tree phy nodes 2022-07-25 15:08:23 +02:00
somlabs/visionsom-6ull imx: Don't define __ASSEMBLY__ in source files 2022-02-08 23:07:58 -05:00
sr1500 common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
st board: stm32mp1: remove test on CONFIG_DM_REGULATOR 2022-09-06 13:54:50 +02:00
ste/stemmy board: stemmy: Detect board variants and patch DTB 2022-02-28 10:33:45 -05:00
storopack/smegw01 imx: Don't define __ASSEMBLY__ in source files 2022-02-08 23:07:58 -05:00
sunxi sunxi: fix initial environment loading without MMC 2022-06-26 11:22:54 +01:00
Synology arm: kirkwood: 88f6281: Detect CONFIG_SYS_TCLK from SAR register 2022-08-23 12:38:47 +02:00
synopsys linker_lists: Rename sections to remove . prefix 2022-06-23 12:58:18 -04:00
sysam Convert CONFIG_EXTRA_CLOCK to Kconfig 2022-07-05 17:03:01 -04:00
tbs/tbs2910 tbs2910: Convert to DM_SERIAL 2022-04-12 15:36:18 +02:00
tcl/sl50 Convert CONFIG_SKIP_LOWLEVEL_INIT et al to Kconfig 2021-08-31 17:47:49 -04:00
technexion imx: Don't define __ASSEMBLY__ in source files 2022-02-08 23:07:58 -05:00
terasic arm: socfpga: Add the terasic de10-standard board 2022-05-23 21:28:07 +02:00
theadorable arm: mvebu: mbus: Fix mbus driver to work also after U-Boot relocation 2022-08-23 12:35:37 +02:00
theobroma-systems rockchip: puma/lion: update MAINTAINERS file 2022-01-07 09:30:44 -05:00
ti board: ti: common: board_detect: Fix EEPROM read quirk 2022-08-31 12:16:01 -04:00
timll lpc32xx: Kconfig: switch to CONFIG_CONS_INDEX 2021-07-06 14:11:50 -04:00
topic/zynq board: topic-miami: Set FCLK1 to 150MHz 2020-06-24 13:11:08 +02:00
toradex verdin-imx8mp: do not save environment when it's nowhere 2022-09-18 22:56:10 +02:00
tplink/wdr4300 Convert CONFIG_SKIP_LOWLEVEL_INIT et al to Kconfig 2021-08-31 17:47:49 -04:00
tq/tqma6 imx: Don't define __ASSEMBLY__ in source files 2022-02-08 23:07:58 -05:00
traverse common: Drop display_options.h from common header 2022-08-10 13:46:55 -04:00
udoo udoo: Call gpio_request() 2022-01-08 11:16:03 -05:00
vamrs/rock960_rk3399 rockchip: Remove ARCH= references from documentation 2020-06-02 17:27:04 -04:00
variscite nxp: Make board/freescale/common/Kconfig safe to include once in arch/Kconfig 2022-07-05 17:03:02 -04:00
vocore/vocore2 mips: Add support for SoM "VoCore2". 2020-04-27 20:30:14 +02:00
vscom/baltos linker_lists: Rename sections to remove . prefix 2022-06-23 12:58:18 -04:00
wandboard MAINTAINERS: Use my personal e-mail address 2021-04-08 20:29:53 +02:00
warp7 warp7: Remove legacy non-DM_ETH code 2022-08-20 21:18:15 -04:00
work-microwave/work_92105 Remove including timestamp.h in version.h 2021-09-17 12:10:44 -04:00
xen/xenguest_arm64 Convert CONFIG_CONS_INDEX et al to Kconfig 2021-12-27 08:41:38 -05:00
xes/common Finish conversion of CONFIG_SYS_CLK_FREQ to Kconfig 2021-12-27 16:20:18 -05:00
xilinx fpga: xilinx: add bitstream flags to driver desc 2022-07-26 09:34:21 +02:00
zyxel/nsa310s arm: kirkwood: nsa310s: Add Distro boot capability 2022-08-23 12:35:37 +02:00