mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH v2 00/34] ARM: MMU rework
@ 2023-05-17  9:03 Sascha Hauer
  2023-05-17  9:03 ` [PATCH v2 01/34] ARM: remove unused membase argument Sascha Hauer
                   ` (33 more replies)
  0 siblings, 34 replies; 68+ messages in thread
From: Sascha Hauer @ 2023-05-17  9:03 UTC (permalink / raw)
  To: Barebox List

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




^ permalink raw reply	[flat|nested] 68+ messages in thread

end of thread, other threads:[~2023-05-22  8:16 UTC | newest]

Thread overview: 68+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-17  9:03 [PATCH v2 00/34] ARM: MMU rework Sascha Hauer
2023-05-17  9:03 ` [PATCH v2 01/34] ARM: remove unused membase argument Sascha Hauer
2023-05-17 12:45   ` Ahmad Fatoum
2023-05-17  9:03 ` [PATCH v2 02/34] ARM: remove unused define Sascha Hauer
2023-05-17 12:45   ` Ahmad Fatoum
2023-05-17  9:03 ` [PATCH v2 03/34] ARM: rename __arm_mem_scratch to arm_mem_scratch Sascha Hauer
2023-05-17 12:46   ` Ahmad Fatoum
2023-05-17  9:03 ` [PATCH v2 04/34] ARM: put scratch mem area below OP-TEE Sascha Hauer
2023-05-17 12:48   ` Ahmad Fatoum
2023-05-17 13:14     ` Sascha Hauer
2023-05-17 15:50       ` Ahmad Fatoum
2023-05-17  9:03 ` [PATCH v2 05/34] ARM: add arm_mem_optee() Sascha Hauer
2023-05-17 12:53   ` Ahmad Fatoum
2023-05-17  9:03 ` [PATCH v2 06/34] ARM: make arm_mem_scratch() a static inline function Sascha Hauer
2023-05-17 12:53   ` Ahmad Fatoum
2023-05-17  9:03 ` [PATCH v2 07/34] ARM: define stack base consistently Sascha Hauer
2023-05-17 12:55   ` Ahmad Fatoum
2023-05-17  9:03 ` [PATCH v2 08/34] ARM: move arm_mem_scratch_get() lower for consistency Sascha Hauer
2023-05-17 12:57   ` Ahmad Fatoum
2023-05-17  9:03 ` [PATCH v2 09/34] ARM: drop cache function initialization Sascha Hauer
2023-05-17  9:03 ` [PATCH v2 10/34] ARM: Add _32 suffix to aarch32 specific filenames Sascha Hauer
2023-05-17  9:03 ` [PATCH v2 11/34] ARM: cpu.c: remove unused include Sascha Hauer
2023-05-17  9:03 ` [PATCH v2 12/34] ARM: mmu-common.c: use common mmu include Sascha Hauer
2023-05-17  9:03 ` [PATCH v2 13/34] ARM: mmu32: rename mmu.h to mmu_32.h Sascha Hauer
2023-05-17  9:03 ` [PATCH v2 14/34] ARM: mmu: implement MAP_FAULT Sascha Hauer
2023-05-17  9:03 ` [PATCH v2 15/34] ARM: mmu64: Use arch_remap_range where possible Sascha Hauer
2023-05-17  9:03 ` [PATCH v2 16/34] ARM: mmu32: implement zero_page_*() Sascha Hauer
2023-05-17  9:03 ` [PATCH v2 17/34] ARM: i.MX: Drop HAB workaround Sascha Hauer
2023-05-17 13:01   ` Ahmad Fatoum
2023-05-17  9:03 ` [PATCH v2 18/34] ARM: Move early MMU after malloc initialization Sascha Hauer
2023-05-17  9:03 ` [PATCH v2 19/34] ARM: mmu: move dma_sync_single_for_device to extra file Sascha Hauer
2023-05-17  9:03 ` [PATCH v2 20/34] ARM: mmu: merge mmu-early_xx.c into mmu_xx.c Sascha Hauer
2023-05-17  9:03 ` [PATCH v2 21/34] ARM: mmu: alloc 64k for early page tables Sascha Hauer
2023-05-17 13:03   ` Ahmad Fatoum
2023-05-17  9:03 ` [PATCH v2 22/34] ARM: mmu32: create alloc_pte() Sascha Hauer
2023-05-17 13:07   ` Ahmad Fatoum
2023-05-17  9:03 ` [PATCH v2 23/34] ARM: mmu64: " Sascha Hauer
2023-05-17 13:15   ` Ahmad Fatoum
2023-05-17 13:17   ` Ahmad Fatoum
2023-05-17  9:03 ` [PATCH v2 24/34] ARM: mmu: drop ttb argument Sascha Hauer
2023-05-17 13:23   ` Ahmad Fatoum
2023-05-17  9:03 ` [PATCH v2 25/34] ARM: mmu: always do MMU initialization early when MMU is enabled Sascha Hauer
2023-05-17 13:29   ` Ahmad Fatoum
2023-05-17  9:03 ` [PATCH v2 26/34] ARM: mmu32: Assume MMU is on Sascha Hauer
2023-05-17 13:36   ` Ahmad Fatoum
2023-05-17  9:03 ` [PATCH v2 27/34] ARM: mmu32: Fix pmd_flags_to_pte() for ARMv4/5/6 Sascha Hauer
2023-05-17 13:39   ` Ahmad Fatoum
2023-05-17  9:03 ` [PATCH v2 28/34] ARM: mmu32: Add pte_flags_to_pmd() Sascha Hauer
2023-05-17 13:43   ` Ahmad Fatoum
2023-05-17 14:44     ` Sascha Hauer
2023-05-17  9:03 ` [PATCH v2 29/34] ARM: mmu32: add get_pte_flags, get_pmd_flags Sascha Hauer
2023-05-17 13:46   ` Ahmad Fatoum
2023-05-17  9:03 ` [PATCH v2 30/34] ARM: mmu32: move functions into c file Sascha Hauer
2023-05-17 13:48   ` Ahmad Fatoum
2023-05-17  9:03 ` [PATCH v2 31/34] ARM: mmu32: read TTB value from register Sascha Hauer
2023-05-17 13:58   ` Ahmad Fatoum
2023-05-17 14:39     ` Sascha Hauer
2023-05-19  6:53       ` Ahmad Fatoum
2023-05-19  7:44         ` Sascha Hauer
2023-05-19  7:52           ` Ahmad Fatoum
2023-05-17  9:03 ` [PATCH v2 32/34] ARM: mmu32: Use pages for early MMU setup Sascha Hauer
2023-05-17 14:21   ` Ahmad Fatoum
2023-05-22  8:14     ` Sascha Hauer
2023-05-17  9:03 ` [PATCH v2 33/34] ARM: mmu32: Skip reserved ranges during initialization Sascha Hauer
2023-05-17 14:43   ` Ahmad Fatoum
2023-05-17 14:55     ` Sascha Hauer
2023-05-17 15:56       ` Ahmad Fatoum
2023-05-17  9:03 ` [PATCH v2 34/34] ARM: mmu64: Use two level pagetables in early code Sascha Hauer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox