+ mm-rmap-add-anon-folio-unmap-dispatcher.patch added to mm-unstable branch
Andrew Morton <[email protected]> Thu, 30 Jul 2026 12:26:36 -0700
| Newsgroups | org.kernel.vger.mm-commits |
|---|---|
| Message-ID | <[email protected]> |
The patch titled
Subject: mm/rmap: add anon folio unmap dispatcher
has been added to the -mm mm-unstable branch. Its filename is
mm-rmap-add-anon-folio-unmap-dispatcher.patch
This patch will shortly appear at
https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-rmap-add-anon-folio-unmap-dispatcher.patch
This patch will later appear in the mm-unstable branch at
git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next via various
branches at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
and is updated there most days
------------------------------------------------------
From: Dev Jain <[email protected]>
Subject: mm/rmap: add anon folio unmap dispatcher
Date: Thu, 30 Jul 2026 09:45:56 +0000
Add ttu_anon_folio() as the common entry point for anonymous folio
unmapping. It dispatches to the lazyfree or swapbacked helper as
appropriate.
Keep restoration of cleared PTEs in the caller, where the PTEs were
removed.
No functional change intended.
Link: https://lore.kernel.org/[email protected]
Signed-off-by: Dev Jain <[email protected]>
Acked-by: David Hildenbrand (Arm) <[email protected]>
Cc: Anshuman Khandual <[email protected]>
Cc: Harry Yoo <[email protected]>
Cc: Jann Horn <[email protected]>
Cc: Lance Yang <[email protected]>
Cc: Liam R. Howlett <[email protected]>
Cc: Lorenzo Stoakes (ARM) <[email protected]>
Cc: Muchun Song <[email protected]>
Cc: Oscar Salvador <[email protected]>
Cc: Rik van Riel <[email protected]>
Cc: Ryan Roberts <[email protected]>
Cc: Vlastimil Babka <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
---
mm/rmap.c | 45 +++++++++++++++++++++++----------------------
1 file changed, 23 insertions(+), 22 deletions(-)
--- a/mm/rmap.c~mm-rmap-add-anon-folio-unmap-dispatcher
+++ a/mm/rmap.c
@@ -2172,6 +2172,26 @@ static bool ttu_anon_swapbacked_folio(st
return true;
}
+static bool ttu_anon_folio(struct vm_area_struct *vma, struct folio *folio,
+ struct page *page, unsigned long address, pte_t *ptep,
+ pte_t pteval, unsigned long nr_pages)
+{
+ /*
+ * Store the swap location in the pte.
+ * See handle_pte_fault() ...
+ */
+ if (WARN_ON_ONCE(folio_test_swapbacked(folio) !=
+ folio_test_swapcache(folio)))
+ return false;
+
+ if (!folio_test_swapbacked(folio))
+ return ttu_anon_lazyfree_folio(vma, folio, nr_pages);
+
+ /* nr_pages > 1 not supported yet */
+ return ttu_anon_swapbacked_folio(vma, folio, page, address, ptep,
+ pteval);
+}
+
/*
* @arg: enum ttu_flags will be passed to this argument
*/
@@ -2349,31 +2369,12 @@ static bool try_to_unmap_one(struct foli
*/
dec_mm_counter(mm, mm_counter(folio));
} else if (folio_test_anon(folio)) {
- /*
- * Store the swap location in the pte.
- * See handle_pte_fault() ...
- */
- if (unlikely(folio_test_swapbacked(folio) !=
- folio_test_swapcache(folio))) {
- WARN_ON_ONCE(1);
+ if (!ttu_anon_folio(vma, folio, page, address,
+ pvmw.pte, pteval, nr_pages)) {
+ set_ptes(mm, address, pvmw.pte, pteval, nr_pages);
goto walk_abort;
}
- /* MADV_FREE page check */
- if (!folio_test_swapbacked(folio)) {
- if (!ttu_anon_lazyfree_folio(vma, folio,
- nr_pages)) {
- set_ptes(mm, address, pvmw.pte, pteval, nr_pages);
- goto walk_abort;
- }
- goto finish_unmap;
- }
-
- if (!ttu_anon_swapbacked_folio(vma, folio, page, address,
- pvmw.pte, pteval)) {
- set_pte_at(mm, address, pvmw.pte, pteval);
- goto walk_abort;
- }
goto finish_unmap;
} else {
/*
_
Patches currently in -mm which might be from [email protected] are
mm-rmap-use-huge_ptep_get-in-try_to_unmap_one.patch
mm-rmap-use-huge_ptep_get-in-try_to_migrate_one.patch
mm-migrate-use-huge_ptep_get-in-remove_migration_pte.patch
mm-page_vma_mapped-use-huge_ptep_get-for-hugetlb.patch
mm-mprotect-use-huge_ptep_get-for-hugetlb.patch
mm-rmap-convert-page-folio-for-hwpoison-checks.patch
mm-rmap-add-try_to_unmap_poisoned_hugetlb_one.patch
mm-rmap-refactor-some-code-around-lazyfree-folio-unmapping.patch
mm-rmap-refactor-anon-folio-unmap-in-try_to_unmap_one.patch
mm-rmap-add-anon-folio-unmap-dispatcher.patch
mm-memory-move-pte_install_uffd_wp_if_needed-into-memoryc.patch
mm-memory-batch-set-uffd-wp-markers-during-zapping.patch
mm-rmap-batch-unmap-file-folios-belonging-to-uffd-wp-vmas.patch