This is a resync of the last patch for 2.5.34 that resulted from this discussion (not the original patch): http://lwn.net/Articles/1642/ The only change was readding the reference to task_info in the beginning of common_interrupt. It had been dropped when we stopped messing with preempt_count there. I've beaten this thing with my normal array of Specweb tests and it is behaving so far. I've booted on an 8-way with and without SMP. part of Ben's original message: > Below is a patch against 2.5.20 that implements 4KB stacks for tasks, > plus a seperate 4KB irq stack for use by interrupts. There are a couple > of reasons for doing this: 4KB stacks put less pressure on the VM > subsystem, reduces the overall memory usage for systems with large > numbers of tasks, and increases the reliability of the system when > under heavy irq load by provide a fixed stack size for interrupt > handlers that other kernel code will not eat into. > > The interrupt stacks are stackable, so we could use multiple > 4KB irq stacks. The thread_info structure is included in each > interrupt stack, and has the current pointer copied into it upon > entry. -- Dave Hansen haveblue@us.ibm.com