
From: Matt Mackall <mpm@selenic.com>

This piece of the THREAD_SIZE cleanup got dropped.  If you make THREAD_SIZE
> 8k, the init thread overlaps the .init section and gets smashed.  I've
gone ahead and killed INIT_THREAD_SIZE throughout as it wasn't doing much. 
This also saves 4k when we use 4k stacks.  Please apply.  Couple more minor
pieces remaining.


---

 25-akpm/arch/parisc/kernel/process.c       |    2 +-
 25-akpm/arch/sparc64/kernel/init_task.c    |    8 --------
 25-akpm/include/asm-arm26/thread_info.h    |    2 --
 25-akpm/include/asm-sparc/thread_info.h    |    3 ---
 25-akpm/include/asm-um/processor-generic.h |    2 --
 25-akpm/include/linux/sched.h              |    6 +-----
 6 files changed, 2 insertions(+), 21 deletions(-)

diff -puN arch/parisc/kernel/process.c~kill-INIT_THREAD_SIZE arch/parisc/kernel/process.c
--- 25/arch/parisc/kernel/process.c~kill-INIT_THREAD_SIZE	2004-03-14 15:41:41.523897672 -0800
+++ 25-akpm/arch/parisc/kernel/process.c	2004-03-14 15:41:41.533896152 -0800
@@ -325,7 +325,7 @@ copy_thread(int nr, unsigned long clone_
 
 		/* Use same stack depth as parent */
 		cregs->ksp = ((unsigned long)(ti))
-			+ (pregs->gr[21] & (INIT_THREAD_SIZE - 1));
+			+ (pregs->gr[21] & (THREAD_SIZE - 1));
 		cregs->gr[30] = usp;
 		if (p->personality == PER_HPUX) {
 #ifdef CONFIG_HPUX
diff -puN arch/sparc64/kernel/init_task.c~kill-INIT_THREAD_SIZE arch/sparc64/kernel/init_task.c
--- 25/arch/sparc64/kernel/init_task.c~kill-INIT_THREAD_SIZE	2004-03-14 15:41:41.525897368 -0800
+++ 25-akpm/arch/sparc64/kernel/init_task.c	2004-03-14 15:41:41.533896152 -0800
@@ -24,14 +24,6 @@ __asm__ (".text");
 union thread_union init_thread_union = { INIT_THREAD_INFO(init_task) };
 
 /*
- * This is to make the init_thread+stack be the right size for >8k pagesize.
- * The definition of thread_union in sched.h makes it 16k wide.
- */
-#if PAGE_SHIFT != 13
-char init_task_stack[THREAD_SIZE - INIT_THREAD_SIZE] = { 0 };
-#endif
-
-/*
  * Initial task structure.
  *
  * All other task structs will be allocated on slabs in fork.c
diff -puN include/asm-arm26/thread_info.h~kill-INIT_THREAD_SIZE include/asm-arm26/thread_info.h
--- 25/include/asm-arm26/thread_info.h~kill-INIT_THREAD_SIZE	2004-03-14 15:41:41.526897216 -0800
+++ 25-akpm/include/asm-arm26/thread_info.h	2004-03-14 15:41:41.534896000 -0800
@@ -81,8 +81,6 @@ static inline struct thread_info *curren
 
 /* FIXME - PAGE_SIZE < 32K */
 #define THREAD_SIZE		(8192)
-/*FIXME INIT_THREAD_SIZE - how big? */
-//#define INIT_THREAD_SIZE        (65536)
 #define __get_user_regs(x) (((struct pt_regs *)((unsigned long)(x) + THREAD_SIZE - 8)) - 1)
 
 extern struct thread_info *alloc_thread_info(struct task_struct *task);
diff -puN include/asm-sparc/thread_info.h~kill-INIT_THREAD_SIZE include/asm-sparc/thread_info.h
--- 25/include/asm-sparc/thread_info.h~kill-INIT_THREAD_SIZE	2004-03-14 15:41:41.528896912 -0800
+++ 25-akpm/include/asm-sparc/thread_info.h	2004-03-14 15:41:41.534896000 -0800
@@ -100,9 +100,6 @@ BTFIXUPDEF_CALL(void, free_thread_info, 
  * Size of kernel stack for each process.
  * Observe the order of get_free_pages() in alloc_thread_info().
  * The sun4 has 8K stack too, because it's short on memory, and 16K is a waste.
- *
- * XXX Watch how INIT_THREAD_SIZE evolves in linux/sched.h and elsewhere.
- *     On 2.5.24 it happens to match 8192 magically.
  */
 #define THREAD_SIZE		8192
 
diff -puN include/asm-um/processor-generic.h~kill-INIT_THREAD_SIZE include/asm-um/processor-generic.h
--- 25/include/asm-um/processor-generic.h~kill-INIT_THREAD_SIZE	2004-03-14 15:41:41.529896760 -0800
+++ 25-akpm/include/asm-um/processor-generic.h	2004-03-14 15:41:41.534896000 -0800
@@ -94,8 +94,6 @@ struct thread_struct {
 	.request		= { 0 } \
 }
 
-#define INIT_THREAD_SIZE ((1 << CONFIG_KERNEL_STACK_ORDER) * PAGE_SIZE)
-
 typedef struct {
 	unsigned long seg;
 } mm_segment_t;
diff -puN include/linux/sched.h~kill-INIT_THREAD_SIZE include/linux/sched.h
--- 25/include/linux/sched.h~kill-INIT_THREAD_SIZE	2004-03-14 15:41:41.531896456 -0800
+++ 25-akpm/include/linux/sched.h	2004-03-14 15:41:41.535895848 -0800
@@ -672,13 +672,9 @@ void yield(void);
  */
 extern struct exec_domain	default_exec_domain;
 
-#ifndef INIT_THREAD_SIZE
-# define INIT_THREAD_SIZE	2048*sizeof(long)
-#endif
-
 union thread_union {
 	struct thread_info thread_info;
-	unsigned long stack[INIT_THREAD_SIZE/sizeof(long)];
+	unsigned long stack[THREAD_SIZE/sizeof(long)];
 };
 
 #ifndef __HAVE_ARCH_KSTACK_END

_
