The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox