[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250910-arm-remove-high-pte-v1-1-d0899882815f@linaro.org>
Date: Wed, 10 Sep 2025 11:47:52 +0200
From: Linus Walleij <linus.walleij@...aro.org>
To: Russell King <linux@...linux.org.uk>
Cc: linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org,
Russell King <rmk+kernel@...linux.org.uk>,
Matthew Wilcox <willy@...radead.org>, Arnd Bergmann <arnd@...db.de>,
Linus Walleij <linus.walleij@...aro.org>
Subject: [PATCH] RFC: ARM: drop support for HIGHPTE
Matthew Wilcox suggests HIGHPTE is a burden for the
kernel MM, and only one ARM system (vt8500) is currently
using it.
This deletes the use of HIGHPTE in ARM32 clearing the way
to remove the feature altogether.
It was introduced in commit 65cec8e3db60 "ARM: implement highpte"
in 2009, so this RFC is intended as a discussion item to
check if it is still a desired feature 16 years later
or if we can get rid of it.
To: Russell King <rmk+kernel@...linux.org.uk>
To: Matthew Wilcox <willy@...radead.org>
To: Arnd Bergmann <arnd@...db.de>
Link: https://lore.kernel.org/linux-arm-kernel/aMDYdp3H-yOHU1Pm@casper.infradead.org/
Signed-off-by: Linus Walleij <linus.walleij@...aro.org>
---
arch/arm/Kconfig | 11 -----------
arch/arm/configs/vt8500_v6_v7_defconfig | 1 -
arch/arm/include/asm/pgalloc.h | 8 +-------
3 files changed, 1 insertion(+), 19 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index b1f3df39ed4068f215a3460d5c4e021136438eaa..5545583946a2433f86a5ba2d6ade34f5e931ae74 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1229,17 +1229,6 @@ config HIGHMEM
If unsure, say n.
-config HIGHPTE
- bool "Allocate 2nd-level pagetables from highmem" if EXPERT
- depends on HIGHMEM
- default y
- help
- The VM uses one page of physical memory for each page table.
- For systems with a lot of processes, this can use a lot of
- precious low memory, eventually leading to low memory being
- consumed by page tables. Setting this option will allow
- user-space 2nd level page tables to reside in high memory.
-
config ARM_PAN
bool "Enable privileged no-access"
depends on MMU
diff --git a/arch/arm/configs/vt8500_v6_v7_defconfig b/arch/arm/configs/vt8500_v6_v7_defconfig
index 41607a84abc85adfc9d8d2d520354576e1e274d2..a91e6547378136b3e1264aaddcac7d6ddb66987d 100644
--- a/arch/arm/configs/vt8500_v6_v7_defconfig
+++ b/arch/arm/configs/vt8500_v6_v7_defconfig
@@ -10,7 +10,6 @@ CONFIG_ARM_ERRATA_775420=y
CONFIG_HAVE_ARM_ARCH_TIMER=y
CONFIG_AEABI=y
CONFIG_HIGHMEM=y
-CONFIG_HIGHPTE=y
CONFIG_ARM_APPENDED_DTB=y
CONFIG_ARM_ATAG_DTB_COMPAT=y
CONFIG_VFP=y
diff --git a/arch/arm/include/asm/pgalloc.h b/arch/arm/include/asm/pgalloc.h
index a17f01235c29c0dc619c0929aa761df861a5dd2d..ef6cb3e6d179e63c7edbcaf69e6b21847b354a0f 100644
--- a/arch/arm/include/asm/pgalloc.h
+++ b/arch/arm/include/asm/pgalloc.h
@@ -85,18 +85,12 @@ pte_alloc_one_kernel(struct mm_struct *mm)
return pte;
}
-#ifdef CONFIG_HIGHPTE
-#define PGTABLE_HIGHMEM __GFP_HIGHMEM
-#else
-#define PGTABLE_HIGHMEM 0
-#endif
-
static inline pgtable_t
pte_alloc_one(struct mm_struct *mm)
{
struct page *pte;
- pte = __pte_alloc_one(mm, GFP_PGTABLE_USER | PGTABLE_HIGHMEM);
+ pte = __pte_alloc_one(mm, GFP_PGTABLE_USER);
if (!pte)
return NULL;
if (!PageHighMem(pte))
---
base-commit: 8f5ae30d69d7543eee0d70083daf4de8fe15d585
change-id: 20250910-arm-remove-high-pte-6ead9c6eb336
Best regards,
--
Linus Walleij <linus.walleij@...aro.org>
Powered by blists - more mailing lists