Re: [PATCH mm-unstable v4 0/5] mm: khugepaged cleanups and mTHP prerequisites
From: Lorenzo Stoakes (Oracle)
Date: Wed Mar 25 2026 - 08:25:16 EST
-cc old email
Gentle reminder to please send new stuff to ljs@xxxxxxxxxx!
Thanks, Lorenzo
On Wed, Mar 25, 2026 at 05:40:17AM -0600, Nico Pache wrote:
> MAINTAINER NOTE: This is based on mm-unstable with the coresponding
> patches reverted then reapplied.
>
> The following series contains cleanups and prerequisites for my work on
> khugepaged mTHP support [1]. These have been separated out to ease review.
>
> The first patch in the series refactors the page fault folio to pte mapping
> and follows a similar convention as defined by map_anon_folio_pmd_(no)pf().
> This not only cleans up the current implementation of do_anonymous_page(),
> but will allow for reuse later in the khugepaged mTHP implementation.
>
> The second patch adds a small is_pmd_order() helper to check if an order is
> the PMD order. This check is open-coded in a number of places. This patch
> aims to clean this up and will be used more in the khugepaged mTHP work.
> The third patch also adds a small DEFINE for (HPAGE_PMD_NR - 1) which is
> used often across the khugepaged code.
>
> The fourth and fifth patch come from the khugepaged mTHP patchset [1].
> These two patches include the rename of function prefixes, and the
> unification of khugepaged and madvise_collapse via a new
> collapse_single_pmd function.
>
> Patch 1: refactor do_anonymous_page into map_anon_folio_pte_(no)pf
> Patch 2: add is_pmd_order helper
> Patch 3: Add define for (HPAGE_PMD_NR - 1)
> Patch 4: Refactor/rename hpage_collapse
> Patch 5: Refactoring to combine madvise_collapse and khugepaged
>
> Testing:
> - Built for x86_64, aarch64, ppc64le, and s390x
> - ran all arches on test suites provided by the kernel-tests project
> - selftests mm
>
> V4 Changes:
> - added RB and SB tags
> - Patch1: commit message cleanup/additions
> - Patch1: constify two variables, and change 1<<order to 1L<<..
> - Patch1: change zero-page read path to use update_mmu_cache varient
> - Patch5: remove dead code switch statement (SCAN_PTE_MAPPED_HUGEPAGE)
> - Patch5: remove local mmap_locked from madvise_collapse()
> - Patch5: rename mmap_locked to lock_dropped in ..scan_mm_slot() and
> invert the logic. the madvise|khugepaged code now share the same
> naming convention across both functions.
> - Patch5: add assertion to collapse_single_pmd() so both madvise_collapse
> and khugepaged assert the lock.
> - Patch5: Convert one of the VM_BUG_ON's to VM_WARN_ON
>
> V3 - https://lore.kernel.org/all/20260311211315.450947-1-npache@xxxxxxxxxx
> V2 - https://lore.kernel.org/all/20260226012929.169479-1-npache@xxxxxxxxxx
> V1 - https://lore.kernel.org/all/20260212021835.17755-1-npache@xxxxxxxxxx
>
> A big thanks to everyone that has reviewed, tested, and participated in
> the development process.
>
> [1] - https://lore.kernel.org/all/20260122192841.128719-1-npache@xxxxxxxxxx
> [2] - https://lore.kernel.org/all/7334b702-f6a0-4ccf-8ac6-8426a90d1846@xxxxxxxxxx/
> [3] - https://lore.kernel.org/all/25723c0f-c702-44ad-93e9-1056313680cd@xxxxxxxxxx/
> [4] - https://lore.kernel.org/all/81ff9caa-50f2-4951-8d82-2c8dcdf3db91@xxxxxxxxxx/
>
> Nico Pache (5):
> mm: consolidate anonymous folio PTE mapping into helpers
> mm: introduce is_pmd_order helper
> mm/khugepaged: define KHUGEPAGED_MAX_PTES_LIMIT as HPAGE_PMD_NR - 1
> mm/khugepaged: rename hpage_collapse_* to collapse_*
> mm/khugepaged: unify khugepaged and madv_collapse with
> collapse_single_pmd()
>
> include/linux/huge_mm.h | 5 +
> include/linux/mm.h | 4 +
> mm/huge_memory.c | 2 +-
> mm/khugepaged.c | 207 ++++++++++++++++++++--------------------
> mm/memory.c | 63 ++++++++----
> mm/mempolicy.c | 2 +-
> mm/mremap.c | 2 +-
> mm/page_alloc.c | 4 +-
> mm/shmem.c | 3 +-
> 9 files changed, 161 insertions(+), 131 deletions(-)
>
> --
> 2.53.0
>