From: Matt Mackall 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 _