[PATCH v3 0/5] mm/rmap: Refactor try_to_unmap_one

Dev Jain posted 5 patches 1 week, 5 days ago
include/linux/hugetlb.h |   1 +
mm/rmap.c               | 415 ++++++++++++++++++++++------------------
2 files changed, 232 insertions(+), 184 deletions(-)
[PATCH v3 0/5] mm/rmap: Refactor try_to_unmap_one
Posted by Dev Jain 1 week, 5 days ago
In preparation for batching anonymous large folio unmapping to optimize it,
refactor try_to_unmap_one. This series refactors hugetlb, anon-lazyfree
and anon-swapbacked logic into their own functions, significantly
reducing the length of the huge try_to_unmap_one.

---
Split out from
https://lore.kernel.org/all/20260526063635.61721-1-dev.jain@arm.com/

mm-selftests pass on arm64, built on arm64 and x86.

v2->v3:
 - Patch 2: fix comment to say that TTU_HWPOISON can be true for small
   folios only in try_to_unmap_one, since hugetlb bits are now refactored
   away
 - Patch 5: Directly do if (WARN_ON_ONCE())
 - Rebase on latest mm-unstable to resolve conflicts with 30c83145c5b3
   ("mm: rename uffd-wp PTE accessors to uffd")

v1->v2:
 - constify ttu flags in try_to_unmap_hugetlb_one, move const variables up
 - Assert address passed to try_to_unmap_hugetlb_one equals pvmw.address
 - Patch 3: code and comment polishing, do the stat update in the function
 - Remove unnecessary inline hints, remove set_swp_pte_at, instead have
   swp_pte_prepare + set_ptes. Rename subpage -> page. constify
   anon_exclusive.
 - Do pte restoration in caller

Dev Jain (5):
  mm/rmap: convert page -> folio for hwpoison checks
  mm/rmap: Add try_to_unmap_hugetlb_one
  mm/rmap: refactor some code around lazyfree folio unmapping
  mm/rmap: refactor anon folio unmap in try_to_unmap_one
  mm/rmap: add anon folio unmap dispatcher

 include/linux/hugetlb.h |   1 +
 mm/rmap.c               | 415 ++++++++++++++++++++++------------------
 2 files changed, 232 insertions(+), 184 deletions(-)

-- 
2.43.0