The goal of this series is to properly map SDRAM used for OP-TEE non executable, because otherwise the instruction prefetcher might speculate into the OP-TEE area. This is currently not possible because we use 1MiB (AArch32) or 1GiB (AArch64) sections which are too coarse for that. With this series we start using two level page tables also in the early MMU setup. Overall the MMU code is more consolidated now, we no longer differentiate between early MMU setup and non early MMU setup. Consequently the CONFIG_MMU_EARLY option is gone and early MMU setup is always done when the MMU is enabled. One nice side effect of this series is that the Rockchip RK3568 boards now start about a second faster. On these boards the early MMU setup was skipped because of the insufficient memory start alignment. Changes since v1: - integrate review feedback from Ahmad - rework arm_mem_* functions Sascha Hauer (34): ARM: remove unused membase argument ARM: remove unused define ARM: rename __arm_mem_scratch to arm_mem_scratch ARM: put scratch mem area below OP-TEE ARM: add arm_mem_optee() ARM: make arm_mem_scratch() a static inline function ARM: define stack base consistently ARM: move arm_mem_scratch_get() lower for consistency ARM: drop cache function initialization ARM: Add _32 suffix to aarch32 specific filenames ARM: cpu.c: remove unused include ARM: mmu-common.c: use common mmu include ARM: mmu32: rename mmu.h to mmu_32.h ARM: mmu: implement MAP_FAULT ARM: mmu64: Use arch_remap_range where possible ARM: mmu32: implement zero_page_*() ARM: i.MX: Drop HAB workaround ARM: Move early MMU after malloc initialization ARM: mmu: move dma_sync_single_for_device to extra file ARM: mmu: merge mmu-early_xx.c into mmu_xx.c ARM: mmu: alloc 64k for early page tables ARM: mmu32: create alloc_pte() ARM: mmu64: create alloc_pte() ARM: mmu: drop ttb argument ARM: mmu: always do MMU initialization early when MMU is enabled ARM: mmu32: Assume MMU is on ARM: mmu32: Fix pmd_flags_to_pte() for ARMv4/5/6 ARM: mmu32: Add pte_flags_to_pmd() ARM: mmu32: add get_pte_flags, get_pmd_flags ARM: mmu32: move functions into c file ARM: mmu32: read TTB value from register ARM: mmu32: Use pages for early MMU setup ARM: mmu32: Skip reserved ranges during initialization ARM: mmu64: Use two level pagetables in early code arch/arm/Makefile | 5 +- arch/arm/boards/raspberry-pi/lowlevel.c | 2 +- arch/arm/cpu/Kconfig | 3 +- arch/arm/cpu/Makefile | 21 +- arch/arm/cpu/{cache.c => cache_32.c} | 85 +++-- arch/arm/cpu/cache_64.c | 5 - arch/arm/cpu/cpu.c | 2 - arch/arm/cpu/dma_32.c | 20 ++ arch/arm/cpu/dma_64.c | 16 + arch/arm/cpu/entry.c | 2 +- arch/arm/cpu/{entry_ll.S => entry_ll_32.S} | 0 .../arm/cpu/{exceptions.S => exceptions_32.S} | 0 .../arm/cpu/{interrupts.c => interrupts_32.c} | 0 arch/arm/cpu/{lowlevel.S => lowlevel_32.S} | 0 arch/arm/cpu/mmu-common.c | 13 +- arch/arm/cpu/mmu-early.c | 71 ----- arch/arm/cpu/mmu-early_64.c | 93 ------ arch/arm/cpu/{mmu.c => mmu_32.c} | 298 +++++++++++------- arch/arm/cpu/{mmu.h => mmu_32.h} | 20 -- arch/arm/cpu/mmu_64.c | 109 ++++--- arch/arm/cpu/{setupc.S => setupc_32.S} | 0 arch/arm/cpu/sm.c | 3 +- .../arm/cpu/{smccc-call.S => smccc-call_32.S} | 0 arch/arm/cpu/start.c | 21 +- arch/arm/cpu/uncompress.c | 11 +- arch/arm/include/asm/barebox-arm.h | 60 ++-- arch/arm/include/asm/cache.h | 2 - arch/arm/include/asm/mmu.h | 3 +- arch/arm/mach-imx/atf.c | 12 +- arch/arm/mach-imx/xload-common.c | 2 +- common/Kconfig | 9 - drivers/hab/habv4.c | 10 +- include/mach/rockchip/bootrom.h | 2 +- include/mmu.h | 1 + 34 files changed, 414 insertions(+), 487 deletions(-) rename arch/arm/cpu/{cache.c => cache_32.c} (89%) create mode 100644 arch/arm/cpu/dma_32.c create mode 100644 arch/arm/cpu/dma_64.c rename arch/arm/cpu/{entry_ll.S => entry_ll_32.S} (100%) rename arch/arm/cpu/{exceptions.S => exceptions_32.S} (100%) rename arch/arm/cpu/{interrupts.c => interrupts_32.c} (100%) rename arch/arm/cpu/{lowlevel.S => lowlevel_32.S} (100%) delete mode 100644 arch/arm/cpu/mmu-early.c delete mode 100644 arch/arm/cpu/mmu-early_64.c rename arch/arm/cpu/{mmu.c => mmu_32.c} (67%) rename arch/arm/cpu/{mmu.h => mmu_32.h} (75%) rename arch/arm/cpu/{setupc.S => setupc_32.S} (100%) rename arch/arm/cpu/{smccc-call.S => smccc-call_32.S} (100%) -- 2.39.2