[PATCH v3 0/4] armv8: mmu: fix region unmapping and optimise set_one_region()
Casey Connolly
casey.connolly at linaro.org
Thu May 7 21:58:07 CEST 2026
Currently trying to unmap a region results in slow and largely broken
behaviour as we unnecessarily split blocks and manually set thousands of
individual 4k pages instead of higher level blocks.
This series fixes the behaviour of set_one_region() so that it works properly when called to unmap regions. See patch 4 for details.
Patches 1 & 2 improve the existing debug functionality, the pagetable
dumper will now print most explicitly unmapped regions (since they still
have their PA intact), as well as adding a new function which does a
very basic software TLB lookup to help with debugging.
Patch 3 de-duplicates some code by moving the loop that always surrounds
set_one_region() calls into its own function, this also helps with
readability in the calling functions.
Changes in v3:
- Reworked entirely to be correct, v2 would cause unrelated pages to
get updated too if the region was inside a block.
- Added additional patches with debugging improvements and code cleanup
- V2: https://lore.kernel.org/u-boot/20260504183721.646712-1-casey.connolly@linaro.org/
---
Casey Connolly (4):
armv8: mmu: add a function to help debug TLB lookups
armv8: mmu: teach the pagetable dumper to show explicit FAULT maps
armv8: mmu: commonize the set_one_region() loop
armv8: mmu: fix and optimise explicitly unmapping regions
arch/arm/cpu/armv8/cache_v8.c | 172 +++++++++++++++++++++++----------------
arch/arm/include/asm/armv8/mmu.h | 7 ++
2 files changed, 107 insertions(+), 72 deletions(-)
---
base-commit: bb0f3eebb3c196d9b6efbbd1e5aa9b16abbb9ad6
// Casey (she/they)
More information about the U-Boot
mailing list