x86 transition to 4k stacks (0/3)
RFC PATCH 1/1 x86 transition to 4k stacks (0/3)
The kernel currently uses an 8k stack, per task. Here is the infrastructure needed to allow us to halve that at some point in the future.
This is a port of work Ben LaHaise did around 2.5.20 time. I split it up and updated it for the new preempt_count semantics.
I split the original patch up into 3 pieces (apply in this order):
* clean thread info infrastructure (1/3)
- take out all instances of things like (8191&addr) to get current stack address.
* stack checking (3/3)
- use gcc's profiling features to check for stack overflows upon entry to functions.
- Warn if the task goes over 4k.
- Panic if the stack gets within 512 bytes of overflowing.
* interrupt stacks (3/3)
- allocate per-cpu interrupt stacks. upon entry to common_interrupt, switch to the current cpu's stack.
- inherit the interrupted task's preempt count
Any suggestions on how to deal with "gcc -p" and old, buggy versions of gcc would be appreciated.
Signature · 2 lines
Dave Hansen [email protected]
Quoted 21 lines · Dave Hansen
The kernel currently uses an 8k stack, per task. Here is the infrastructure needed to allow us to halve that at some point in the future.
This is a port of work Ben LaHaise did around 2.5.20 time. I split it up and updated it for the new
preempt_countsemantics.I split the original patch up into 3 pieces (apply in this order):
* clean thread info infrastructure (1/3)
- take out all instances of things like (8191&addr) to get current stack address.
* stack checking (3/3)
- use gcc's profiling features to check for stack overflows upon entry to functions.
- Warn if the task goes over 4k.
- Panic if the stack gets within 512 bytes of overflowing.
* interrupt stacks (3/3)
- allocate per-cpu interrupt stacks. upon entry tocommon_interrupt, switch to the current cpu's stack.
- inherit the interrupted task's preempt count
Quoted 2 lines
Any suggestions on how to deal with "gcc -p" and old, buggy versions of gcc would be appreciated.
You might have better luck with -finstrument-functions; I don't know if it is supported as far back but I don't believe it was buggy. It has a few fewer quirks than mcount profiling.
Signature · 2 lines
Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer