linux-um.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [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).