* [PATCH v2 0/7] enable PT_RECLAIM on all 64-bit architectures
@ 2025-11-19 7:31 Qi Zheng
2025-11-19 7:31 ` [PATCH v2 1/7] mm: change mm/pt_reclaim.c to use asm/tlb.h instead of asm-generic/tlb.h Qi Zheng
` (6 more replies)
0 siblings, 7 replies; 12+ messages in thread
From: Qi Zheng @ 2025-11-19 7:31 UTC (permalink / raw)
To: will, aneesh.kumar, npiggin, peterz, dev.jain, akpm, david,
ioworker0, linmag7
Cc: linux-arch, linux-kernel, linux-mm, linux-alpha, loongarch,
linux-mips, linux-parisc, linux-um, Qi Zheng
From: Qi Zheng <zhengqi.arch@bytedance.com>
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 64BIT. This way,
PT_RECLAIM can be enabled by default on all 64-bit architectures.
BTW, 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: enable PT_RECLAIM on all 64-bit architectures
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
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v2 1/7] mm: change mm/pt_reclaim.c to use asm/tlb.h instead of asm-generic/tlb.h
2025-11-19 7:31 [PATCH v2 0/7] enable PT_RECLAIM on all 64-bit architectures Qi Zheng
@ 2025-11-19 7:31 ` Qi Zheng
2025-11-19 11:41 ` David Hildenbrand (Red Hat)
2025-11-19 7:31 ` [PATCH v2 2/7] alpha: mm: enable MMU_GATHER_RCU_TABLE_FREE Qi Zheng
` (5 subsequent siblings)
6 siblings, 1 reply; 12+ messages in thread
From: Qi Zheng @ 2025-11-19 7:31 UTC (permalink / raw)
To: will, aneesh.kumar, npiggin, peterz, dev.jain, akpm, david,
ioworker0, linmag7
Cc: linux-arch, linux-kernel, linux-mm, linux-alpha, loongarch,
linux-mips, linux-parisc, linux-um, Qi Zheng
From: Qi Zheng <zhengqi.arch@bytedance.com>
Generally, the asm/tlb.h will include asm-generic/tlb.h, so change
mm/pt_reclaim.c to use asm/tlb.h instead of asm-generic/tlb.h. This can
also fix compilation errors on some architecture when CONFIG_PT_RECLAIM
is enabled (such as alpha).
Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
---
mm/pt_reclaim.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mm/pt_reclaim.c b/mm/pt_reclaim.c
index 0d9cfbf4fe5d8..46771cfff8239 100644
--- a/mm/pt_reclaim.c
+++ b/mm/pt_reclaim.c
@@ -2,7 +2,7 @@
#include <linux/hugetlb.h>
#include <linux/pgalloc.h>
-#include <asm-generic/tlb.h>
+#include <asm/tlb.h>
#include "internal.h"
--
2.20.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 2/7] alpha: mm: enable MMU_GATHER_RCU_TABLE_FREE
2025-11-19 7:31 [PATCH v2 0/7] enable PT_RECLAIM on all 64-bit architectures Qi Zheng
2025-11-19 7:31 ` [PATCH v2 1/7] mm: change mm/pt_reclaim.c to use asm/tlb.h instead of asm-generic/tlb.h Qi Zheng
@ 2025-11-19 7:31 ` Qi Zheng
2025-11-19 7:31 ` [PATCH v2 3/7] LoongArch: " Qi Zheng
` (4 subsequent siblings)
6 siblings, 0 replies; 12+ messages in thread
From: Qi Zheng @ 2025-11-19 7:31 UTC (permalink / raw)
To: will, aneesh.kumar, npiggin, peterz, dev.jain, akpm, david,
ioworker0, linmag7
Cc: linux-arch, linux-kernel, linux-mm, linux-alpha, loongarch,
linux-mips, linux-parisc, linux-um, Qi Zheng, Richard Henderson,
Matt Turner
From: Qi Zheng <zhengqi.arch@bytedance.com>
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,
first enable MMU_GATHER_RCU_TABLE_FREE to prepare for enabling the
PT_RECLAIM feature, which resolves this problem.
Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
Cc: Richard Henderson <richard.henderson@linaro.org>
Cc: Matt Turner <mattst88@gmail.com>
---
arch/alpha/Kconfig | 1 +
arch/alpha/include/asm/tlb.h | 6 +++---
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
index 80367f2cf821c..6c7dbf0adad62 100644
--- a/arch/alpha/Kconfig
+++ b/arch/alpha/Kconfig
@@ -38,6 +38,7 @@ config ALPHA
select OLD_SIGSUSPEND
select CPU_NO_EFFICIENT_FFS if !ALPHA_EV67
select MMU_GATHER_NO_RANGE
+ select MMU_GATHER_RCU_TABLE_FREE
select SPARSEMEM_EXTREME if SPARSEMEM
select ZONE_DMA
help
diff --git a/arch/alpha/include/asm/tlb.h b/arch/alpha/include/asm/tlb.h
index 4f79e331af5ea..ad586b898fd6b 100644
--- a/arch/alpha/include/asm/tlb.h
+++ b/arch/alpha/include/asm/tlb.h
@@ -4,7 +4,7 @@
#include <asm-generic/tlb.h>
-#define __pte_free_tlb(tlb, pte, address) pte_free((tlb)->mm, pte)
-#define __pmd_free_tlb(tlb, pmd, address) pmd_free((tlb)->mm, pmd)
-
+#define __pte_free_tlb(tlb, pte, address) tlb_remove_ptdesc((tlb), page_ptdesc(pte))
+#define __pmd_free_tlb(tlb, pmd, address) tlb_remove_ptdesc((tlb), virt_to_ptdesc(pmd))
+
#endif
--
2.20.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 3/7] LoongArch: mm: enable MMU_GATHER_RCU_TABLE_FREE
2025-11-19 7:31 [PATCH v2 0/7] enable PT_RECLAIM on all 64-bit architectures Qi Zheng
2025-11-19 7:31 ` [PATCH v2 1/7] mm: change mm/pt_reclaim.c to use asm/tlb.h instead of asm-generic/tlb.h Qi Zheng
2025-11-19 7:31 ` [PATCH v2 2/7] alpha: mm: enable MMU_GATHER_RCU_TABLE_FREE Qi Zheng
@ 2025-11-19 7:31 ` Qi Zheng
2025-11-19 7:31 ` [PATCH v2 4/7] mips: " Qi Zheng
` (3 subsequent siblings)
6 siblings, 0 replies; 12+ messages in thread
From: Qi Zheng @ 2025-11-19 7:31 UTC (permalink / raw)
To: will, aneesh.kumar, npiggin, peterz, dev.jain, akpm, david,
ioworker0, linmag7
Cc: linux-arch, linux-kernel, linux-mm, linux-alpha, loongarch,
linux-mips, linux-parisc, linux-um, Qi Zheng, Huacai Chen,
WANG Xuerui
From: Qi Zheng <zhengqi.arch@bytedance.com>
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,
first enable MMU_GATHER_RCU_TABLE_FREE to prepare for enabling the
PT_RECLAIM feature, which resolves this problem.
Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
Cc: Huacai Chen <chenhuacai@kernel.org>
Cc: WANG Xuerui <kernel@xen0n.name>
---
arch/loongarch/Kconfig | 1 +
arch/loongarch/include/asm/pgalloc.h | 7 +++----
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/loongarch/Kconfig b/arch/loongarch/Kconfig
index 5b1116733d881..57d3e199605dc 100644
--- a/arch/loongarch/Kconfig
+++ b/arch/loongarch/Kconfig
@@ -186,6 +186,7 @@ config LOONGARCH
select IRQ_LOONGARCH_CPU
select LOCK_MM_AND_FIND_VMA
select MMU_GATHER_MERGE_VMAS if MMU
+ select MMU_GATHER_RCU_TABLE_FREE
select MODULES_USE_ELF_RELA if MODULES
select NEED_PER_CPU_EMBED_FIRST_CHUNK
select NEED_PER_CPU_PAGE_FIRST_CHUNK
diff --git a/arch/loongarch/include/asm/pgalloc.h b/arch/loongarch/include/asm/pgalloc.h
index 08dcc698ec184..248f62d0b590e 100644
--- a/arch/loongarch/include/asm/pgalloc.h
+++ b/arch/loongarch/include/asm/pgalloc.h
@@ -55,8 +55,7 @@ static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm)
return pte;
}
-#define __pte_free_tlb(tlb, pte, address) \
- tlb_remove_ptdesc((tlb), page_ptdesc(pte))
+#define __pte_free_tlb(tlb, pte, address) tlb_remove_ptdesc((tlb), page_ptdesc(pte))
#ifndef __PAGETABLE_PMD_FOLDED
@@ -79,7 +78,7 @@ static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address)
return pmd;
}
-#define __pmd_free_tlb(tlb, x, addr) pmd_free((tlb)->mm, x)
+#define __pmd_free_tlb(tlb, x, addr) tlb_remove_ptdesc((tlb), virt_to_ptdesc(x))
#endif
@@ -99,7 +98,7 @@ static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long address)
return pud;
}
-#define __pud_free_tlb(tlb, x, addr) pud_free((tlb)->mm, x)
+#define __pud_free_tlb(tlb, x, addr) tlb_remove_ptdesc((tlb), virt_to_ptdesc(x))
#endif /* __PAGETABLE_PUD_FOLDED */
--
2.20.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 4/7] mips: mm: enable MMU_GATHER_RCU_TABLE_FREE
2025-11-19 7:31 [PATCH v2 0/7] enable PT_RECLAIM on all 64-bit architectures Qi Zheng
` (2 preceding siblings ...)
2025-11-19 7:31 ` [PATCH v2 3/7] LoongArch: " Qi Zheng
@ 2025-11-19 7:31 ` Qi Zheng
2025-11-19 7:31 ` [PATCH v2 5/7] parisc: " Qi Zheng
` (2 subsequent siblings)
6 siblings, 0 replies; 12+ messages in thread
From: Qi Zheng @ 2025-11-19 7:31 UTC (permalink / raw)
To: will, aneesh.kumar, npiggin, peterz, dev.jain, akpm, david,
ioworker0, linmag7
Cc: linux-arch, linux-kernel, linux-mm, linux-alpha, loongarch,
linux-mips, linux-parisc, linux-um, Qi Zheng, Thomas Bogendoerfer
From: Qi Zheng <zhengqi.arch@bytedance.com>
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,
first enable MMU_GATHER_RCU_TABLE_FREE to prepare for enabling the
PT_RECLAIM feature, which resolves this problem.
Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
---
arch/mips/Kconfig | 1 +
arch/mips/include/asm/pgalloc.h | 7 +++----
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index e8683f58fd3e2..8b16dd4db7c08 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -99,6 +99,7 @@ config MIPS
select IRQ_FORCED_THREADING
select ISA if EISA
select LOCK_MM_AND_FIND_VMA
+ select MMU_GATHER_RCU_TABLE_FREE
select MODULES_USE_ELF_REL if MODULES
select MODULES_USE_ELF_RELA if MODULES && 64BIT
select PERF_USE_VMALLOC
diff --git a/arch/mips/include/asm/pgalloc.h b/arch/mips/include/asm/pgalloc.h
index 942af87f1cddb..9a7e5af16c00b 100644
--- a/arch/mips/include/asm/pgalloc.h
+++ b/arch/mips/include/asm/pgalloc.h
@@ -48,8 +48,7 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
extern void pgd_init(void *addr);
extern pgd_t *pgd_alloc(struct mm_struct *mm);
-#define __pte_free_tlb(tlb, pte, address) \
- tlb_remove_ptdesc((tlb), page_ptdesc(pte))
+#define __pte_free_tlb(tlb, pte, address) tlb_remove_ptdesc((tlb), page_ptdesc(pte))
#ifndef __PAGETABLE_PMD_FOLDED
@@ -72,7 +71,7 @@ static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address)
return pmd;
}
-#define __pmd_free_tlb(tlb, x, addr) pmd_free((tlb)->mm, x)
+#define __pmd_free_tlb(tlb, x, addr) tlb_remove_ptdesc((tlb), virt_to_ptdesc(x))
#endif
@@ -98,7 +97,7 @@ static inline void p4d_populate(struct mm_struct *mm, p4d_t *p4d, pud_t *pud)
set_p4d(p4d, __p4d((unsigned long)pud));
}
-#define __pud_free_tlb(tlb, x, addr) pud_free((tlb)->mm, x)
+#define __pud_free_tlb(tlb, x, addr) tlb_remove_ptdesc((tlb), virt_to_ptdesc(x))
#endif /* __PAGETABLE_PUD_FOLDED */
--
2.20.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 5/7] parisc: mm: enable MMU_GATHER_RCU_TABLE_FREE
2025-11-19 7:31 [PATCH v2 0/7] enable PT_RECLAIM on all 64-bit architectures Qi Zheng
` (3 preceding siblings ...)
2025-11-19 7:31 ` [PATCH v2 4/7] mips: " Qi Zheng
@ 2025-11-19 7:31 ` Qi Zheng
2025-11-19 7:31 ` [PATCH v2 6/7] um: " Qi Zheng
2025-11-19 7:31 ` [PATCH v2 7/7] mm: enable PT_RECLAIM on all 64-bit architectures Qi Zheng
6 siblings, 0 replies; 12+ messages in thread
From: Qi Zheng @ 2025-11-19 7:31 UTC (permalink / raw)
To: will, aneesh.kumar, npiggin, peterz, dev.jain, akpm, david,
ioworker0, linmag7
Cc: linux-arch, linux-kernel, linux-mm, linux-alpha, loongarch,
linux-mips, linux-parisc, linux-um, Qi Zheng,
James E.J. Bottomley, Helge Deller
From: Qi Zheng <zhengqi.arch@bytedance.com>
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,
first enable MMU_GATHER_RCU_TABLE_FREE to prepare for enabling the
PT_RECLAIM feature, which resolves this problem.
Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
Cc: Helge Deller <deller@gmx.de>
---
arch/parisc/Kconfig | 1 +
arch/parisc/include/asm/tlb.h | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
index 47fd9662d8005..62d5a89d5c7bc 100644
--- a/arch/parisc/Kconfig
+++ b/arch/parisc/Kconfig
@@ -79,6 +79,7 @@ config PARISC
select GENERIC_CLOCKEVENTS
select CPU_NO_EFFICIENT_FFS
select THREAD_INFO_IN_TASK
+ select MMU_GATHER_RCU_TABLE_FREE
select NEED_DMA_MAP_STATE
select NEED_SG_DMA_LENGTH
select HAVE_ARCH_KGDB
diff --git a/arch/parisc/include/asm/tlb.h b/arch/parisc/include/asm/tlb.h
index 44235f367674d..4501fee0a8fa4 100644
--- a/arch/parisc/include/asm/tlb.h
+++ b/arch/parisc/include/asm/tlb.h
@@ -5,8 +5,8 @@
#include <asm-generic/tlb.h>
#if CONFIG_PGTABLE_LEVELS == 3
-#define __pmd_free_tlb(tlb, pmd, addr) pmd_free((tlb)->mm, pmd)
+#define __pmd_free_tlb(tlb, pmd, addr) tlb_remove_ptdesc((tlb), virt_to_ptdesc(pmd))
#endif
-#define __pte_free_tlb(tlb, pte, addr) pte_free((tlb)->mm, pte)
+#define __pte_free_tlb(tlb, pte, addr) tlb_remove_ptdesc((tlb), page_ptdesc(pte))
#endif
--
2.20.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 6/7] um: mm: enable MMU_GATHER_RCU_TABLE_FREE
2025-11-19 7:31 [PATCH v2 0/7] enable PT_RECLAIM on all 64-bit architectures Qi Zheng
` (4 preceding siblings ...)
2025-11-19 7:31 ` [PATCH v2 5/7] parisc: " Qi Zheng
@ 2025-11-19 7:31 ` Qi Zheng
2025-11-19 7:31 ` [PATCH v2 7/7] mm: enable PT_RECLAIM on all 64-bit architectures Qi Zheng
6 siblings, 0 replies; 12+ messages in thread
From: Qi Zheng @ 2025-11-19 7:31 UTC (permalink / raw)
To: will, aneesh.kumar, npiggin, peterz, dev.jain, akpm, david,
ioworker0, linmag7
Cc: linux-arch, linux-kernel, linux-mm, linux-alpha, loongarch,
linux-mips, linux-parisc, linux-um, Qi Zheng, Richard Weinberger,
Anton Ivanov, Johannes Berg
From: Qi Zheng <zhengqi.arch@bytedance.com>
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,
first enable MMU_GATHER_RCU_TABLE_FREE to prepare for enabling the
PT_RECLAIM feature, which resolves this problem.
Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
Cc: Richard Weinberger <richard@nod.at>
Cc: Anton Ivanov <anton.ivanov@cambridgegreys.com>
Cc: Johannes Berg <johannes@sipsolutions.net>
---
arch/um/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/um/Kconfig b/arch/um/Kconfig
index 097c6a6265ef3..47a41bc77bb24 100644
--- a/arch/um/Kconfig
+++ b/arch/um/Kconfig
@@ -41,6 +41,7 @@ config UML
select HAVE_SYSCALL_TRACEPOINTS
select THREAD_INFO_IN_TASK
select SPARSE_IRQ
+ select MMU_GATHER_RCU_TABLE_FREE
config MMU
bool
--
2.20.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 7/7] mm: enable PT_RECLAIM on all 64-bit architectures
2025-11-19 7:31 [PATCH v2 0/7] enable PT_RECLAIM on all 64-bit architectures Qi Zheng
` (5 preceding siblings ...)
2025-11-19 7:31 ` [PATCH v2 6/7] um: " Qi Zheng
@ 2025-11-19 7:31 ` Qi Zheng
2025-11-19 11:38 ` David Hildenbrand (Red Hat)
6 siblings, 1 reply; 12+ messages in thread
From: Qi Zheng @ 2025-11-19 7:31 UTC (permalink / raw)
To: will, aneesh.kumar, npiggin, peterz, dev.jain, akpm, david,
ioworker0, linmag7
Cc: linux-arch, linux-kernel, linux-mm, linux-alpha, loongarch,
linux-mips, linux-parisc, linux-um, Qi Zheng
From: Qi Zheng <zhengqi.arch@bytedance.com>
Now, the MMU_GATHER_RCU_TABLE_FREE is enabled on all 64-bit architectures,
so make PT_RECLAIM depend on 64BIT, thereby enabling PT_RECLAIM on all
64-bit architectures.
Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
---
arch/x86/Kconfig | 1 -
mm/Kconfig | 9 ++-------
2 files changed, 2 insertions(+), 8 deletions(-)
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index eac2e86056902..96bff81fd4787 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -330,7 +330,6 @@ config X86
select FUNCTION_ALIGNMENT_4B
imply IMA_SECURE_AND_OR_TRUSTED_BOOT if EFI
select HAVE_DYNAMIC_FTRACE_NO_PATCHABLE
- select ARCH_SUPPORTS_PT_RECLAIM if X86_64
select ARCH_SUPPORTS_SCHED_SMT if SMP
select SCHED_SMT if SMP
select ARCH_SUPPORTS_SCHED_CLUSTER if SMP
diff --git a/mm/Kconfig b/mm/Kconfig
index d548976d0e0ad..94eec5c0cad96 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -1448,14 +1448,9 @@ config ARCH_HAS_USER_SHADOW_STACK
The architecture has hardware support for userspace shadow call
stacks (eg, x86 CET, arm64 GCS or RISC-V Zicfiss).
-config ARCH_SUPPORTS_PT_RECLAIM
- def_bool n
-
config PT_RECLAIM
- bool "reclaim empty user page table pages"
- default y
- depends on ARCH_SUPPORTS_PT_RECLAIM && MMU && SMP
- select MMU_GATHER_RCU_TABLE_FREE
+ def_bool y
+ depends on 64BIT
help
Try to reclaim empty user page table pages in paths other than munmap
and exit_mmap path.
--
2.20.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v2 7/7] mm: enable PT_RECLAIM on all 64-bit architectures
2025-11-19 7:31 ` [PATCH v2 7/7] mm: enable PT_RECLAIM on all 64-bit architectures Qi Zheng
@ 2025-11-19 11:38 ` David Hildenbrand (Red Hat)
2025-11-19 12:15 ` Qi Zheng
0 siblings, 1 reply; 12+ messages in thread
From: David Hildenbrand (Red Hat) @ 2025-11-19 11:38 UTC (permalink / raw)
To: Qi Zheng, will, aneesh.kumar, npiggin, peterz, dev.jain, akpm,
ioworker0, linmag7
Cc: linux-arch, linux-kernel, linux-mm, linux-alpha, loongarch,
linux-mips, linux-parisc, linux-um, Qi Zheng
On 19.11.25 08:31, Qi Zheng wrote:
> From: Qi Zheng <zhengqi.arch@bytedance.com>
>
> Now, the MMU_GATHER_RCU_TABLE_FREE is enabled on all 64-bit architectures,
> so make PT_RECLAIM depend on 64BIT, thereby enabling PT_RECLAIM on all
> 64-bit architectures.
>
> Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
> ---
> arch/x86/Kconfig | 1 -
> mm/Kconfig | 9 ++-------
> 2 files changed, 2 insertions(+), 8 deletions(-)
>
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index eac2e86056902..96bff81fd4787 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -330,7 +330,6 @@ config X86
> select FUNCTION_ALIGNMENT_4B
> imply IMA_SECURE_AND_OR_TRUSTED_BOOT if EFI
> select HAVE_DYNAMIC_FTRACE_NO_PATCHABLE
> - select ARCH_SUPPORTS_PT_RECLAIM if X86_64
> select ARCH_SUPPORTS_SCHED_SMT if SMP
> select SCHED_SMT if SMP
> select ARCH_SUPPORTS_SCHED_CLUSTER if SMP
> diff --git a/mm/Kconfig b/mm/Kconfig
> index d548976d0e0ad..94eec5c0cad96 100644
> --- a/mm/Kconfig
> +++ b/mm/Kconfig
> @@ -1448,14 +1448,9 @@ config ARCH_HAS_USER_SHADOW_STACK
> The architecture has hardware support for userspace shadow call
> stacks (eg, x86 CET, arm64 GCS or RISC-V Zicfiss).
>
> -config ARCH_SUPPORTS_PT_RECLAIM
> - def_bool n
> -
> config PT_RECLAIM
> - bool "reclaim empty user page table pages"
> - default y
> - depends on ARCH_SUPPORTS_PT_RECLAIM && MMU && SMP
> - select MMU_GATHER_RCU_TABLE_FREE
> + def_bool y
> + depends on 64BIT
As discussed in the other thread, likely
config PT_RECLAIM
def_bool y
depends on MMU_GATHER_RCU_TABLE_FREE && 64BIT
Could be nice, and if possible even dropping the 64BIT limitation as
well if there is no need to.
--
Cheers
David
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 1/7] mm: change mm/pt_reclaim.c to use asm/tlb.h instead of asm-generic/tlb.h
2025-11-19 7:31 ` [PATCH v2 1/7] mm: change mm/pt_reclaim.c to use asm/tlb.h instead of asm-generic/tlb.h Qi Zheng
@ 2025-11-19 11:41 ` David Hildenbrand (Red Hat)
2025-11-19 12:17 ` Qi Zheng
0 siblings, 1 reply; 12+ messages in thread
From: David Hildenbrand (Red Hat) @ 2025-11-19 11:41 UTC (permalink / raw)
To: Qi Zheng, will, aneesh.kumar, npiggin, peterz, dev.jain, akpm,
ioworker0, linmag7
Cc: linux-arch, linux-kernel, linux-mm, linux-alpha, loongarch,
linux-mips, linux-parisc, linux-um, Qi Zheng
On 19.11.25 08:31, Qi Zheng wrote:
> From: Qi Zheng <zhengqi.arch@bytedance.com>
>
> Generally, the asm/tlb.h will include asm-generic/tlb.h, so change
> mm/pt_reclaim.c to use asm/tlb.h instead of asm-generic/tlb.h. This can
> also fix compilation errors on some architecture when CONFIG_PT_RECLAIM
> is enabled (such as alpha).
"This is a preparation for enabling CONFIG_PT_RECLAIM on other
architectures, such as alpha."
>
> Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
> ---
> mm/pt_reclaim.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/mm/pt_reclaim.c b/mm/pt_reclaim.c
> index 0d9cfbf4fe5d8..46771cfff8239 100644
> --- a/mm/pt_reclaim.c
> +++ b/mm/pt_reclaim.c
> @@ -2,7 +2,7 @@
> #include <linux/hugetlb.h>
> #include <linux/pgalloc.h>
>
> -#include <asm-generic/tlb.h>
> +#include <asm/tlb.h>
>
> #include "internal.h"
>
Right, we're using pte_free_tlb(), and the default lives in
include/asm-generic/tlb.h.
Acked-by: David Hildenbrand (Red Hat) <david@kernel.org>
--
Cheers
David
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 7/7] mm: enable PT_RECLAIM on all 64-bit architectures
2025-11-19 11:38 ` David Hildenbrand (Red Hat)
@ 2025-11-19 12:15 ` Qi Zheng
0 siblings, 0 replies; 12+ messages in thread
From: Qi Zheng @ 2025-11-19 12:15 UTC (permalink / raw)
To: David Hildenbrand (Red Hat), will, aneesh.kumar, npiggin, peterz,
dev.jain, akpm, ioworker0, linmag7
Cc: linux-arch, linux-kernel, linux-mm, linux-alpha, loongarch,
linux-mips, linux-parisc, linux-um, Qi Zheng
On 11/19/25 7:38 PM, David Hildenbrand (Red Hat) wrote:
> On 19.11.25 08:31, Qi Zheng wrote:
>> From: Qi Zheng <zhengqi.arch@bytedance.com>
>>
>> Now, the MMU_GATHER_RCU_TABLE_FREE is enabled on all 64-bit
>> architectures,
>> so make PT_RECLAIM depend on 64BIT, thereby enabling PT_RECLAIM on all
>> 64-bit architectures.
>>
>> Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
>> ---
>> arch/x86/Kconfig | 1 -
>> mm/Kconfig | 9 ++-------
>> 2 files changed, 2 insertions(+), 8 deletions(-)
>>
>> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
>> index eac2e86056902..96bff81fd4787 100644
>> --- a/arch/x86/Kconfig
>> +++ b/arch/x86/Kconfig
>> @@ -330,7 +330,6 @@ config X86
>> select FUNCTION_ALIGNMENT_4B
>> imply IMA_SECURE_AND_OR_TRUSTED_BOOT if EFI
>> select HAVE_DYNAMIC_FTRACE_NO_PATCHABLE
>> - select ARCH_SUPPORTS_PT_RECLAIM if X86_64
>> select ARCH_SUPPORTS_SCHED_SMT if SMP
>> select SCHED_SMT if SMP
>> select ARCH_SUPPORTS_SCHED_CLUSTER if SMP
>> diff --git a/mm/Kconfig b/mm/Kconfig
>> index d548976d0e0ad..94eec5c0cad96 100644
>> --- a/mm/Kconfig
>> +++ b/mm/Kconfig
>> @@ -1448,14 +1448,9 @@ config ARCH_HAS_USER_SHADOW_STACK
>> The architecture has hardware support for userspace shadow call
>> stacks (eg, x86 CET, arm64 GCS or RISC-V Zicfiss).
>> -config ARCH_SUPPORTS_PT_RECLAIM
>> - def_bool n
>> -
>> config PT_RECLAIM
>> - bool "reclaim empty user page table pages"
>> - default y
>> - depends on ARCH_SUPPORTS_PT_RECLAIM && MMU && SMP
>> - select MMU_GATHER_RCU_TABLE_FREE
>> + def_bool y
>> + depends on 64BIT
>
> As discussed in the other thread, likely
>
> config PT_RECLAIM
> def_bool y
> depends on MMU_GATHER_RCU_TABLE_FREE && 64BIT
>
> Could be nice, and if possible even dropping the 64BIT limitation as
> well if there is no need to.
I think it's ok to drop the 64BIT limitation. There should be some
32-bit architectures that already enable MMU_GATHER_RCU_TABLE_FREE.
>
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 1/7] mm: change mm/pt_reclaim.c to use asm/tlb.h instead of asm-generic/tlb.h
2025-11-19 11:41 ` David Hildenbrand (Red Hat)
@ 2025-11-19 12:17 ` Qi Zheng
0 siblings, 0 replies; 12+ messages in thread
From: Qi Zheng @ 2025-11-19 12:17 UTC (permalink / raw)
To: David Hildenbrand (Red Hat), will, aneesh.kumar, npiggin, peterz,
dev.jain, akpm, ioworker0, linmag7
Cc: linux-arch, linux-kernel, linux-mm, linux-alpha, loongarch,
linux-mips, linux-parisc, linux-um, Qi Zheng
On 11/19/25 7:41 PM, David Hildenbrand (Red Hat) wrote:
> On 19.11.25 08:31, Qi Zheng wrote:
>> From: Qi Zheng <zhengqi.arch@bytedance.com>
>>
>> Generally, the asm/tlb.h will include asm-generic/tlb.h, so change
>> mm/pt_reclaim.c to use asm/tlb.h instead of asm-generic/tlb.h. This can
>> also fix compilation errors on some architecture when CONFIG_PT_RECLAIM
>> is enabled (such as alpha).
>
> "This is a preparation for enabling CONFIG_PT_RECLAIM on other
> architectures, such as alpha."
OK, will modify it in the next version.
>
>>
>> Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
>> ---
>> mm/pt_reclaim.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/mm/pt_reclaim.c b/mm/pt_reclaim.c
>> index 0d9cfbf4fe5d8..46771cfff8239 100644
>> --- a/mm/pt_reclaim.c
>> +++ b/mm/pt_reclaim.c
>> @@ -2,7 +2,7 @@
>> #include <linux/hugetlb.h>
>> #include <linux/pgalloc.h>
>> -#include <asm-generic/tlb.h>
>> +#include <asm/tlb.h>
>> #include "internal.h"
>
> Right, we're using pte_free_tlb(), and the default lives in include/asm-
> generic/tlb.h.
>
> Acked-by: David Hildenbrand (Red Hat) <david@kernel.org>
Thanks!
>
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2025-11-19 12:17 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-19 7:31 [PATCH v2 0/7] enable PT_RECLAIM on all 64-bit architectures Qi Zheng
2025-11-19 7:31 ` [PATCH v2 1/7] mm: change mm/pt_reclaim.c to use asm/tlb.h instead of asm-generic/tlb.h Qi Zheng
2025-11-19 11:41 ` David Hildenbrand (Red Hat)
2025-11-19 12:17 ` Qi Zheng
2025-11-19 7:31 ` [PATCH v2 2/7] alpha: mm: enable MMU_GATHER_RCU_TABLE_FREE Qi Zheng
2025-11-19 7:31 ` [PATCH v2 3/7] LoongArch: " Qi Zheng
2025-11-19 7:31 ` [PATCH v2 4/7] mips: " Qi Zheng
2025-11-19 7:31 ` [PATCH v2 5/7] parisc: " Qi Zheng
2025-11-19 7:31 ` [PATCH v2 6/7] um: " Qi Zheng
2025-11-19 7:31 ` [PATCH v2 7/7] mm: enable PT_RECLAIM on all 64-bit architectures Qi Zheng
2025-11-19 11:38 ` David Hildenbrand (Red Hat)
2025-11-19 12:15 ` Qi Zheng
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).