OPTEE_SIZE is always defined in <asm-generic/memory_layout.h> either as as CONFIG_OPTEE_SIZE or as 0 if the option is undefined. There is never a reason to map the last OPTEE_SIZE bytes in the initial memory as cached and executable: - OPTEE_SIZE == 0: no change - OPTEE_SIZE != 0 && CONFIG_PBL_OPTEE=y: cache must not be enabled for the region to avoid speculation - OPTEE_SIZE != 0 && CONFIG_BOOTM_OPTEE=y: we won't use this region for anything between MMU early init and normal init, so no harm in disabling caches. Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> --- arch/arm/cpu/start.c | 2 +- arch/arm/cpu/uncompress.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c index 5861c15d43df..672f26e0063c 100644 --- a/arch/arm/cpu/start.c +++ b/arch/arm/cpu/start.c @@ -171,7 +171,7 @@ __noreturn __no_sanitize_address void barebox_non_pbl_start(unsigned long membas } else { pr_debug("enabling MMU, ttb @ 0x%08lx\n", ttb); arm_early_mmu_cache_invalidate(); - mmu_early_enable(membase, memsize, ttb); + mmu_early_enable(membase, memsize - OPTEE_SIZE, ttb); } } diff --git a/arch/arm/cpu/uncompress.c b/arch/arm/cpu/uncompress.c index 2250b8ccd375..537ee63229d7 100644 --- a/arch/arm/cpu/uncompress.c +++ b/arch/arm/cpu/uncompress.c @@ -84,7 +84,7 @@ void __noreturn barebox_pbl_start(unsigned long membase, unsigned long memsize, if (IS_ENABLED(CONFIG_MMU_EARLY)) { unsigned long ttb = arm_mem_ttb(membase, endmem); pr_debug("enabling MMU, ttb @ 0x%08lx\n", ttb); - mmu_early_enable(membase, memsize, ttb); + mmu_early_enable(membase, memsize - OPTEE_SIZE, ttb); } free_mem_ptr = arm_mem_early_malloc(membase, endmem); -- 2.30.2