[PATCH v4 0/8] enable PT_RECLAIM on more 64-bit architectures
Qi Zheng
qi.zheng at linux.dev
Tue Jan 27 04:12:53 PST 2026
From: Qi Zheng <zhengqi.arch at bytedance.com>
Changes in v4:
- convert __HAVE_ARCH_TLB_REMOVE_TABLE to CONFIG_HAVE_ARCH_TLB_REMOVE_TABLE config
- fix a WARN_ON_ONCE() on sparc64 (and on ppc)
(reported by Andreas Larsson)
- collect Acked-by (Hi David, I've kept your Acked-by, feel free to drop it)
- rebase onto the v6.19-rc7
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 more 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.
For these architectures that define its own __tlb_remove_table(), since
their page tables are not of type struct ptdesc, they cannot be supported
PT_RECLAIM.
Therefore, this series first enables MMU_GATHER_RCU_TABLE_FREE on all 64-bit
architectures, then converts __HAVE_ARCH_TLB_REMOVE_TABLE to
CONFIG_HAVE_ARCH_TLB_REMOVE_TABLE config, and finally makes PT_RECLAIM depend on
MMU_GATHER_RCU_TABLE_FREE && !HAVE_ARCH_TLB_REMOVE_TABLE. This way, PT_RECLAIM
can be enabled by default on most 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 (8):
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: convert __HAVE_ARCH_TLB_REMOVE_TABLE to
CONFIG_HAVE_ARCH_TLB_REMOVE_TABLE config
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/powerpc/Kconfig | 1 +
arch/powerpc/include/asm/tlb.h | 1 -
arch/sparc/Kconfig | 1 +
arch/sparc/include/asm/tlb_64.h | 1 -
arch/um/Kconfig | 1 +
arch/x86/Kconfig | 1 -
include/asm-generic/tlb.h | 2 +-
mm/Kconfig | 8 +++-----
mm/pt_reclaim.c | 2 +-
17 files changed, 23 insertions(+), 23 deletions(-)
--
2.20.1
More information about the linux-um
mailing list