Re: [RFC PATCH] mm: Enable CONFIG_PT_RECLAIM on all architectures
From: Dev Jain
Date: Mon Nov 03 2025 - 03:44:54 EST
On 03/11/25 12:33 pm, Qi Zheng wrote:
Hi Dev,
On 11/3/25 2:37 PM, Dev Jain wrote:
The implementation of CONFIG_PT_RECLAIM is completely contained in
generic
mm code. It depends on the RCU callback which will reclaim the
pagetables -
there is nothing arch-specific about that. So, enable this config for
all architectures.
Thanks for doing this!
But unfortunately, not all architectures call tlb_remove_ptdesc() in
__pte_free_tlb(). Some architectures directly call pte_free() to
free PTE pages (without RCU).
Thanks! This was not obvious to figure out.
Is there an arch bottleneck because of which they do this? I mean to say,
is something stopping us from simply redirecting __pte_free_tlb to
tlb_remove_ptdesc
or pte_free_defer?
I am looking to enable this config at least on arm64 by default, I
believe it will be legal
to do this at least here.
We need to modify these architectures first, otherwise it will
lead to UAF. This approach is feasible because Hugh provides similar
support in pte_free_defer().
Enabling PT_RECLAIM on all architecture has always been on my
TODO list, but it's been blocked by other things. :(
Thanks,
Qi
Signed-off-by: Dev Jain <dev.jain@xxxxxxx>
---
arch/x86/Kconfig | 1 -
mm/Kconfig | 5 +----
mm/pt_reclaim.c | 2 +-
3 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index fa3b616af03a..5681308a5650 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -327,7 +327,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 0e26f4fc8717..903c37d02555 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -1355,13 +1355,10 @@ 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
+ depends on MMU && SMP
select MMU_GATHER_RCU_TABLE_FREE
help
Try to reclaim empty user page table pages in paths other
than munmap
diff --git a/mm/pt_reclaim.c b/mm/pt_reclaim.c
index 7e9455a18aae..049e17f08c6a 100644
--- a/mm/pt_reclaim.c
+++ b/mm/pt_reclaim.c
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0
#include <linux/hugetlb.h>
-#include <asm-generic/tlb.h>
+#include <asm/tlb.h>
#include <asm/pgalloc.h>
#include "internal.h"