kill INIT_THREAD_SIZE
Subsystems (2)
PATCH 1/1 kill INIT_THREAD_SIZE
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.
diff -puN ./include/asm-arm26/thread_info.h~kill-init_thread_size ./include/asm-arm26/thread_info.h
test-mpm/./arch/parisc/kernel/process.c | 2 +- test-mpm/./arch/sparc64/kernel/init_task.c | 8 -------- test-mpm/./include/asm-arm26/thread_info.h | 2 -- test-mpm/./include/asm-sparc/thread_info.h | 3 --- test-mpm/./include/asm-um/processor-generic.h | 2 -- test-mpm/./include/linux/sched.h | 6 +----- 6 files changed, 2 insertions(+), 21 deletions(-)
./arch/parisc/kernel/process.c renamed from ./arch/parisc/kernel/process.c~kill-init_thread_size +1 -1
@@ -315,7 +315,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
./arch/sparc64/kernel/init_task.c renamed from ./arch/sparc64/kernel/init_task.c~kill-init_thread_size +0 -8
@@ -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
./include/asm-arm26/thread_info.h renamed from ./include/asm-arm26/thread_info.h~kill-init_thread_size +0 -2
@@ -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-i386/thread_info.h~kill-init_thread_size ./include/asm-i386/thread_info.h
./include/asm-sparc/thread_info.h renamed from ./include/asm-sparc/thread_info.h~kill-init_thread_size +0 -3
@@ -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
./include/asm-um/processor-generic.h renamed from ./include/asm-um/processor-generic.h~kill-init_thread_size +0 -2
@@ -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 ;
./include/linux/sched.h renamed from ./include/linux/sched.h~kill-init_thread_size +1 -5
@@ -669,13 +669,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
_
Signature · 1 line
Matt Mackall : http://www.selenic.com : Linux development and consulting