I fixed the problems that I was having. thread_info->preempt_count is now used to store softirq state, unlike in 2.5.20. Preempt count was not preserved once the switch to the interrupt stack occurred. This caused two nested softirqs and a deadlock. It is fixed now. Any comments? Is this right for -mm, or should I try to push right to Linus? part of Ben LaHaise'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