A bunch of cleanups around unmapping and zapping. Mostly simplifications, code movements, documentation and renaming of zapping functions.
With this series, we'll have the following high-level zap/unmap functions (excluding high-level folio zapping): * unmap_vmas() for actual unmapping (vmas will go away) * zap_vma(): zap all page table entries in a vma * zap_vma_for_reaping(): zap_vma() that must not block * zap_vma_range(): zap a range of page table entries * zap_vma_range_batched(): zap_vma_range() with more options and batching * zap_special_vma_range(): limited zap_vma_range() for modules * __zap_vma_range(): internal helper Patch #1 is not about unmapping/zapping, but I stumbled over it while verifying MADV_DONTNEED range handling. Patch #16 is related to [1], but makes sense even independent of that. [1] https://lore.kernel.org/r/[email protected] The CC list is already long enough. As these are simple changes to drivers/arch code, I'm only CCing maintainers of all changes but only reviewers of the MM bits. Cc: Andrew Morton <[email protected]> Cc: Lorenzo Stoakes <[email protected]> Cc: "Liam R. Howlett" <[email protected]> Cc: Vlastimil Babka <[email protected]> Cc: Mike Rapoport <[email protected]> Cc: Suren Baghdasaryan <[email protected]> Cc: Michal Hocko <[email protected]> Cc: Jann Horn <[email protected]> Cc: Pedro Falcato <[email protected]> Cc: David Rientjes <[email protected]> Cc: Shakeel Butt <[email protected]> Cc: "Matthew Wilcox (Oracle)" <[email protected]> Cc: Alice Ryhl <[email protected]> Cc: Madhavan Srinivasan <[email protected]> Cc: Michael Ellerman <[email protected]> Cc: Christian Borntraeger <[email protected]> Cc: Janosch Frank <[email protected]> Cc: Claudio Imbrenda <[email protected]> Cc: Alexander Gordeev <[email protected]> Cc: Gerald Schaefer <[email protected]> Cc: Heiko Carstens <[email protected]> Cc: Vasily Gorbik <[email protected]> Cc: Jarkko Sakkinen <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Borislav Petkov <[email protected]> Cc: Greg Kroah-Hartman <[email protected]> Cc: "Arve Hjønnevåg" <[email protected]> Cc: Todd Kjos <[email protected]> Cc: Christian Brauner <[email protected]> Cc: Carlos Llamas <[email protected]> Cc: Alice Ryhl <[email protected]> Cc: Ian Abbott <[email protected]> Cc: H Hartley Sweeten <[email protected]> Cc: Jani Nikula <[email protected]> Cc: Joonas Lahtinen <[email protected]> Cc: Rodrigo Vivi <[email protected]> Cc: Tvrtko Ursulin <[email protected]> Cc: David Airlie <[email protected]> Cc: Simona Vetter <[email protected]> Cc: Jason Gunthorpe <[email protected]> Cc: Leon Romanovsky <[email protected]> Cc: Dimitri Sivanich <[email protected]> Cc: Arnd Bergmann <[email protected]> Cc: Alexei Starovoitov <[email protected]> Cc: Daniel Borkmann <[email protected]> Cc: Andrii Nakryiko <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Arnaldo Carvalho de Melo <[email protected]> Cc: Namhyung Kim <[email protected]> Cc: Andy Lutomirski <[email protected]> Cc: Vincenzo Frascino <[email protected]> Cc: Eric Dumazet <[email protected]> Cc: Neal Cardwell <[email protected]> Cc: "David S. Miller" <[email protected]> Cc: David Ahern <[email protected]> Cc: Jakub Kicinski <[email protected]> Cc: Paolo Abeni <[email protected]> Cc: Miguel Ojeda <[email protected]> Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] David Hildenbrand (Arm) (16): mm/madvise: drop range checks in madvise_free_single_vma() mm/memory: remove "zap_details" parameter from zap_page_range_single() mm/memory: inline unmap_mapping_range_vma() into unmap_mapping_range_tree() mm/memory: simplify calculation in unmap_mapping_range_tree() mm/oom_kill: use MMU_NOTIFY_CLEAR in __oom_reap_task_mm() mm/oom_kill: factor out zapping of VMA into zap_vma_for_reaping() mm/memory: rename unmap_single_vma() to __zap_vma_range() mm/memory: move adjusting of address range to unmap_vmas() mm/memory: convert details->even_cows into details->skip_cows mm/memory: use __zap_vma_range() in zap_vma_for_reaping() mm/memory: inline unmap_page_range() into __zap_vma_range() mm: rename zap_vma_pages() to zap_vma() mm: rename zap_page_range_single_batched() to zap_vma_range_batched() mm: rename zap_page_range_single() to zap_vma_range() mm: rename zap_vma_ptes() to zap_special_vma_range() mm/memory: support VM_MIXEDMAP in zap_special_vma_range() arch/powerpc/platforms/book3s/vas-api.c | 2 +- arch/powerpc/platforms/pseries/vas.c | 2 +- arch/s390/mm/gmap_helpers.c | 2 +- arch/x86/kernel/cpu/sgx/encl.c | 2 +- drivers/android/binder/page_range.rs | 4 +- drivers/android/binder_alloc.c | 2 +- drivers/comedi/comedi_fops.c | 2 +- drivers/gpu/drm/i915/i915_mm.c | 4 +- drivers/infiniband/core/uverbs_main.c | 6 +- drivers/misc/sgi-gru/grumain.c | 2 +- include/linux/mm.h | 23 ++- kernel/bpf/arena.c | 3 +- kernel/events/core.c | 2 +- lib/vdso/datastore.c | 2 +- mm/internal.h | 7 +- mm/interval_tree.c | 5 - mm/madvise.c | 24 +-- mm/memory.c | 217 ++++++++++++------------ mm/oom_kill.c | 15 +- mm/page-writeback.c | 2 +- net/ipv4/tcp.c | 7 +- rust/kernel/mm/virt.rs | 4 +- 22 files changed, 162 insertions(+), 177 deletions(-) base-commit: df9c51269a5e2a6fbca2884a756a4011a5e78748 -- 2.43.0
