u-boot/arch/arm/mach-k3
Nishanth Menon ee91d46557 arm: mach-k3: common: Make sure firmware sections are loaded prior to armv8 startup
With Device Manager firmware in an elf file form, we cannot load the FIT
image to the exact same address as any of the executable sections of the
elf file itself is located.

However, the device tree descriptions for the ARMV8 bootloader/OS
includes DDR regions only the final sections in DDR where the Device
Manager firmware is actually executing out of.

As the R5 uC is usually operating at a slower rate than an ARMv8 MPU,
by starting the Armv8 ahead of parsing the elf and copying the correct
sections to the required memories creates a race condition where the
ARMv8 could overwrite the elf image loaded from the FIT image prior to
the R5 completing parsing and putting the correct sections of elf in
the required memory locations. OR create rather obscure debug conditions
where data in the section is being modified by ARMV8 OS while the elf
copy is in progress.

To prevent all these conditions, lets make sure that the elf parse and
copy operations are completed ahead of ARMv8 being released to execute.

We will pay a penalty of elf copy time, but that is a valid tradeoff in
comparison to debug of alternate scenarios.

Signed-off-by: Nishanth Menon <nm@ti.com>
2021-09-17 14:48:53 -04:00
..
include/mach arm: mach-k3: am6_init: Prioritize MSMC traffic over DDR in NAVSS Northbridge 2021-09-17 14:47:03 -04:00
j721e clk: ti: k3: Update driver to account for divider flags 2021-09-17 14:47:03 -04:00
j7200 clk: ti: k3: Update driver to account for divider flags 2021-09-17 14:47:03 -04:00
am6_init.c arm: mach-k3: am6_init: Prioritize MSMC traffic over DDR in NAVSS Northbridge 2021-09-17 14:47:03 -04:00
am642_init.c arch: arm: mach-k3: am642_init: Correct the function name spl_boot_mode() to spl_mmc_boot_mode() 2021-07-27 10:58:49 +05:30
arm64-mmu.c armv8: mach-k3: am642: Add custom MMU support 2021-05-12 16:27:57 +05:30
cache.S arm: mach-k3: Clean non-coherent lines out of L3 cache 2020-08-11 10:18:27 +05:30
common.c arm: mach-k3: common: Make sure firmware sections are loaded prior to armv8 startup 2021-09-17 14:48:53 -04:00
common.h arm: mach-k3: Cleanup common start_non_linux_remote_cores() 2021-07-27 11:00:44 +05:30
config.mk tools: k3_fit_atf: add DM binary to the FIT image 2021-06-11 16:34:52 +05:30
config_secure.mk arm: mach-k3: Add secure device build support 2019-04-26 17:51:51 -04:00
j721e_init.c arm: mach-k3: j721e: Cleanup MAIN R5 boot code from R5 SPL 2021-07-27 11:00:44 +05:30
Kconfig arm: mach-k3: introduce new config option for sysfw split 2021-06-11 16:34:52 +05:30
lowlevel_init.S armv7r: K3: Allow SPL to run only on core 0 2018-11-26 22:52:11 -05:00
Makefile arm: mach-k3: Add platform data for j721e and j7200 2021-06-11 16:34:52 +05:30
r5_mpu.c armv7R: K3: r5_mpu: Enable execute permission for MCU0 BTCM 2020-03-03 13:08:14 +05:30
security.c arm: mach-k3: add support for detecting firmware images from FIT 2021-06-11 16:34:52 +05:30
sysfw-loader.c arm: mach-k3: sysfw-loader: pass boardcfg to sciserver 2021-06-11 16:34:52 +05:30