[PATCH v2 00/34] ARM: MMU rework
Sascha Hauer
s.hauer at pengutronix.de
Wed May 17 02:03:06 PDT 2023
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
More information about the barebox
mailing list