* [PATCH] alpha: cleanup dead ALPHA_LARGE_VMALLOC
@ 2026-08-16 14:38 Julian Braha
2026-08-16 17:41 ` Al Viro
0 siblings, 1 reply; 2+ messages in thread
From: Julian Braha @ 2026-08-16 14:38 UTC (permalink / raw)
To: richard.henderson, linmag7
Cc: qi.zheng, akpm, viro, geert, catalin.marinas, rppt, joao,
linux-alpha, linux-kernel, kernel-janitors, Julian Braha
Currently, the ALPHA_LARGE_VMALLOC config option can never be enabled,
meaning that all references to it are dead code.
Let's remove this dead option and its associated code.
This dead code was found by kconfirm, a static analysis tool for Kconfig.
Signed-off-by: Julian Braha <julianbraha@gmail.com>
---
arch/alpha/Kconfig | 15 ---------------
arch/alpha/include/asm/pgtable.h | 4 ----
arch/alpha/mm/fault.c | 24 ------------------------
arch/alpha/mm/init.c | 10 ++--------
4 files changed, 2 insertions(+), 51 deletions(-)
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
index 7b7dafe7d9df..fdffcea749ac 100644
--- a/arch/alpha/Kconfig
+++ b/arch/alpha/Kconfig
@@ -413,21 +413,6 @@ config ALPHA_WTINT
If unsure, say N.
-# LARGE_VMALLOC is racy, if you *really* need it then fix it first
-config ALPHA_LARGE_VMALLOC
- bool
- help
- Process creation and other aspects of virtual memory management can
- be streamlined if we restrict the kernel to one PGD for all vmalloc
- allocations. This equates to about 8GB.
-
- Under normal circumstances, this is so far and above what is needed
- as to be laughable. However, there are certain applications (such
- as benchmark-grade in-kernel web serving) that can make use of as
- much vmalloc space as is available.
-
- Say N unless you know you need gobs and gobs of vmalloc space.
-
config VERBOSE_MCHECK
bool "Verbose Machine Checks"
diff --git a/arch/alpha/include/asm/pgtable.h b/arch/alpha/include/asm/pgtable.h
index 8e00cf9dc39d..3d7c1bab4154 100644
--- a/arch/alpha/include/asm/pgtable.h
+++ b/arch/alpha/include/asm/pgtable.h
@@ -50,11 +50,7 @@ struct vm_area_struct;
/* Number of pointers that fit on a page: this will go away. */
#define PTRS_PER_PAGE (1UL << (PAGE_SHIFT-3))
-#ifdef CONFIG_ALPHA_LARGE_VMALLOC
-#define VMALLOC_START 0xfffffe0000000000
-#else
#define VMALLOC_START (-2*PGDIR_SIZE)
-#endif
#define VMALLOC_END (-PGDIR_SIZE)
/*
diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c
index a9816bbc9f34..0bc5fc4d510e 100644
--- a/arch/alpha/mm/fault.c
+++ b/arch/alpha/mm/fault.c
@@ -111,10 +111,6 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
if (!mm || faulthandler_disabled())
goto no_context;
-#ifdef CONFIG_ALPHA_LARGE_VMALLOC
- if (address >= TASK_SIZE)
- goto vmalloc_fault;
-#endif
if (user_mode(regs))
flags |= FAULT_FLAG_USER;
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
@@ -225,24 +221,4 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
do_sigsegv:
force_sig_fault(SIGSEGV, si_code, (void __user *) address);
return;
-
-#ifdef CONFIG_ALPHA_LARGE_VMALLOC
- vmalloc_fault:
- if (user_mode(regs))
- goto do_sigsegv;
- else {
- /* Synchronize this task's top level page-table
- with the "reference" page table from init. */
- long index = pgd_index(address);
- pgd_t *pgd, *pgd_k;
-
- pgd = current->active_mm->pgd + index;
- pgd_k = swapper_pg_dir + index;
- if (!pgd_present(*pgd) && pgd_present(*pgd_k)) {
- pgd_val(*pgd) = pgd_val(*pgd_k);
- return;
- }
- goto no_context;
- }
-#endif
}
diff --git a/arch/alpha/mm/init.c b/arch/alpha/mm/init.c
index 9531cbc761c0..a2b4d001cbf2 100644
--- a/arch/alpha/mm/init.c
+++ b/arch/alpha/mm/init.c
@@ -45,12 +45,7 @@ pgd_alloc(struct mm_struct *mm)
ret = __pgd_alloc(mm, 0);
init = pgd_offset(&init_mm, 0UL);
if (ret) {
-#ifdef CONFIG_ALPHA_LARGE_VMALLOC
- memcpy (ret + USER_PTRS_PER_PGD, init + USER_PTRS_PER_PGD,
- (PTRS_PER_PGD - USER_PTRS_PER_PGD - 1)*sizeof(pgd_t));
-#else
pgd_val(ret[PTRS_PER_PGD-2]) = pgd_val(init[PTRS_PER_PGD-2]);
-#endif
/* The last PGD entry is the VPTB self-map. */
pgd_val(ret[PTRS_PER_PGD-1])
@@ -148,9 +143,8 @@ callback_init(void * kernel_end)
On systems with larger consoles, additional pages will be
allocated as needed during the mapping process.
- In the case of not SRM, but not CONFIG_ALPHA_LARGE_VMALLOC,
- we need to allocate the PGD we use for vmalloc before we start
- forking other tasks. */
+ In the case of not SRM, we need to allocate the PGD we use for vmalloc
+ before we start forking other tasks. */
two_pages = (void *)
(((unsigned long)kernel_end + ~PAGE_MASK) & PAGE_MASK);
--
2.55.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] alpha: cleanup dead ALPHA_LARGE_VMALLOC
2026-08-16 14:38 [PATCH] alpha: cleanup dead ALPHA_LARGE_VMALLOC Julian Braha
@ 2026-08-16 17:41 ` Al Viro
0 siblings, 0 replies; 2+ messages in thread
From: Al Viro @ 2026-08-16 17:41 UTC (permalink / raw)
To: Julian Braha
Cc: richard.henderson, linmag7, qi.zheng, akpm, geert,
catalin.marinas, rppt, joao, linux-alpha, linux-kernel,
kernel-janitors
On Sun, Aug 16, 2026 at 03:38:35PM +0100, Julian Braha wrote:
> Currently, the ALPHA_LARGE_VMALLOC config option can never be enabled,
> meaning that all references to it are dead code.
>
> Let's remove this dead option and its associated code.
>
> This dead code was found by kconfirm, a static analysis tool for Kconfig.
See https://lore.kernel.org/all/20251130030146.GN3538@ZenIV/
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-08-16 17:41 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-16 14:38 [PATCH] alpha: cleanup dead ALPHA_LARGE_VMALLOC Julian Braha
2026-08-16 17:41 ` Al Viro
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.