[PATCH v3 0/7] enable PT_RECLAIM on all 64-bit architectures

Qi Zheng
2025-12-17T09:47:04Z

From: Qi Zheng <zhengqi.arch@bytedance.com>

Changes in v3:
- modify the commit message in [PATCH v3 1/7] (suggested by David Hildenbrand)
- make PT_RECLAIM depends on MMU_GATHER_RCU_TABLE_FREE instead of 64BIT
- collect Acked-by
- rebase onto the next-20251217

Changelog in v2:
- fix compilation errors (reported by Magnus Lindholm and kernel test robot)
- adjust some code style (suggested by Huacai Chen)
- make PT_RECLAIM user-unselectable (suggested by David Hildenbrand)
- rebase onto the next-20251119

Hi all,

This series aims to enable PT_RECLAIM on all 64-bit architectures.

On a 64-bit system, madvise(MADV_DONTNEED) may cause a large number of empty PTE
page table pages (such as 100GB+). To resolve this problem, we need to enable
PT_RECLAIM, which depends on MMU_GATHER_RCU_TABLE_FREE.

Therefore, this series first enables MMU_GATHER_RCU_TABLE_FREE on all 64-bit
architectures, and finally makes PT_RECLAIM depend on MMU_GATHER_RCU_TABLE_FREE.
This way, PT_RECLAIM can be enabled by default on all 64-bit architectures.

Of course, this will also be enabled on some 32-bit architectures that already
support MMU_GATHER_RCU_TABLE_FREE. That's fine, PT_RECLAIM works well on all
32-bit architectures as well. Although the benefit isn't significant, there's
still memory that can be reclaimed. Perhaps PT_RECLAIM can be enabled on all
32-bit architectures in the future.

Comments and suggestions are welcome!

Thanks,
Qi

Qi Zheng (7):
mm: change mm/pt_reclaim.c to use asm/tlb.h instead of
asm-generic/tlb.h
alpha: mm: enable MMU_GATHER_RCU_TABLE_FREE
LoongArch: mm: enable MMU_GATHER_RCU_TABLE_FREE
mips: mm: enable MMU_GATHER_RCU_TABLE_FREE
parisc: mm: enable MMU_GATHER_RCU_TABLE_FREE
um: mm: enable MMU_GATHER_RCU_TABLE_FREE
mm: make PT_RECLAIM depends on MMU_GATHER_RCU_TABLE_FREE

arch/alpha/Kconfig | 1 +
arch/alpha/include/asm/tlb.h | 6 +++---
arch/loongarch/Kconfig | 1 +
arch/loongarch/include/asm/pgalloc.h | 7 +++----
arch/mips/Kconfig | 1 +
arch/mips/include/asm/pgalloc.h | 7 +++----
arch/parisc/Kconfig | 1 +
arch/parisc/include/asm/tlb.h | 4 ++--
arch/um/Kconfig | 1 +
arch/x86/Kconfig | 1 -
mm/Kconfig | 9 ++-------
mm/pt_reclaim.c | 2 +-
12 files changed, 19 insertions(+), 22 deletions(-)

--
2.20.1