summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnshul Dalal <[email protected]>2026-05-20 08:21:50 +0530
committerTom Rini <[email protected]>2026-05-25 09:29:50 -0600
commit37e6b640ef6177b79021190e3dfab13b465bebe4 (patch)
tree32d555eeadeb0725d0d654eb7f88bd1152fbf655
parentb53128d5283d63d749525895b2a38b558d843ced (diff)
mach-k3: enable mmu after reserved memory is unmapped
Currently the sequence to enable caches for the A53/A72 core on K3 devices looks as follows: 1. Map entire DDR banks 2. Setup page tables (done by mmu_setup) 3. Enable MMU 4. Unmap reserved-memory regions 5. Enable caches However there is a brief period of execution between #3 and #4 where the core can issue speculative accesses to the entire DDR space (including the reserved-memory regions) despite the caches being disabled. A firewall exception is triggered whenever such speculative access is made to secure DDR region of TFA or OP-TEE. This patch fixes the issue by re-ordering the sequence as follows: 1. Map entire DDR banks 2. Setup page tables 3. Unmap reserved-memory regions 4. Enable MMU 5. Enable caches Fixes: f1c694b8fdde ("mach-k3: map all banks using mem_map_from_dram_banks") Reported-by: Suhaas Joshi <[email protected]> Signed-off-by: Anshul Dalal <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
-rw-r--r--arch/arm/mach-k3/common.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arm/mach-k3/common.c b/arch/arm/mach-k3/common.c
index 396018b7a7a..19a6e24f38b 100644
--- a/arch/arm/mach-k3/common.c
+++ b/arch/arm/mach-k3/common.c
@@ -279,7 +279,6 @@ void enable_caches(void)
__func__, fdt_strerror(ret));
mmu_setup();
- mmu_enable();
if (CONFIG_K3_ATF_LOAD_ADDR >= CFG_SYS_SDRAM_BASE) {
ret = mmu_unmap_reserved_mem("tfa", true);
@@ -295,6 +294,7 @@ void enable_caches(void)
__func__, ret);
}
+ mmu_enable();
icache_enable();
dcache_enable();
}