The loop remapping the memory banks looks at reserved memory regions and then maps everything eXecute Never up to the start of the region. If the region happens to be in the same bank as the text area and it comes after it, this means the text area is temporarily mapped eXecute Never, while barebox is running from it, which results in a hang.
Fix this by remapping only after both reserved memory regions and text area have been considered. This series is a rebase of https://lore.barebox.org/barebox/ajhagevhuphja...@pengutronix.de/T/#t Ahmad Fatoum (8): partition: rename region_overlap_end to region_overlap_end_inclusive partition: define new region_overlap_end_exclusive helper ARM: mmu: skip TLB invalidation if remapping zero bytes ARM64: mmu: pass map type not PTE flags to early_remap_range ARM: mmu: provide setup_trap_pages for both 32- and 64-bit ARM: mmu: setup trap pages before remapping R/O ARM: mmu: share common memory bank remapping code ARM: mmu: fix hang reserving memory after text area arch/arm/cpu/mmu-common.c | 69 +++++++++++++++++++++++++++++++++++++++ arch/arm/cpu/mmu-common.h | 1 + arch/arm/cpu/mmu_32.c | 44 ++----------------------- arch/arm/cpu/mmu_64.c | 51 +++++++---------------------- commands/iomemport.c | 2 +- common/partitions.c | 6 ++-- include/range.h | 30 ++++++++++++++--- 7 files changed, 114 insertions(+), 89 deletions(-) -- 2.39.5