[PATCH v2 0/5] Fix lazy mmu mode

From: Ryan Roberts
Date: Mon Mar 03 2025 - 09:16:03 EST


Hi All,

I'm planning to implement lazy mmu mode for arm64 to optimize vmalloc. As part
of that, I will extend lazy mmu mode to cover kernel mappings in vmalloc table
walkers. While lazy mmu mode is already used for kernel mappings in a few
places, this will extend it's use significantly.

Having reviewed the existing lazy mmu implementations in powerpc, sparc and x86,
it looks like there are a bunch of bugs, some of which may be more likely to
trigger once I extend the use of lazy mmu. So this series attempts to clarify
the requirements and fix all the bugs in advance of that series. See patch #1
commit log for all the details.

Note that I have only been able to compile test these changes but I think they
are in good enough shape for some linux-next testing.

Applies on Friday's mm-unstable (5f089a9aa987), as I assume this would be
preferred via that tree.

Changes since v1
================
- split v1 patch #1 into v2 patch #1 and #2; per David
- Added Acked-by tags from David and Andreas; Thanks!
- Refined the patches which are truely fixes and added to stable to cc

Thanks,
Ryan

Ryan Roberts (5):
mm: Fix lazy mmu docs and usage
fs/proc/task_mmu: Reduce scope of lazy mmu region
sparc/mm: Disable preemption in lazy mmu mode
sparc/mm: Avoid calling arch_enter/leave_lazy_mmu() in set_ptes
Revert "x86/xen: allow nesting of same lazy mode"

arch/sparc/include/asm/pgtable_64.h | 2 --
arch/sparc/mm/tlb.c | 5 ++++-
arch/x86/include/asm/xen/hypervisor.h | 15 ++-------------
arch/x86/xen/enlighten_pv.c | 1 -
fs/proc/task_mmu.c | 11 ++++-------
include/linux/pgtable.h | 14 ++++++++------
6 files changed, 18 insertions(+), 30 deletions(-)

--
2.43.0