Hi all,
I did the infrastructure, Anton did the bugfinding and PPC support,
aka. the hard stuff. Other architectures need to implement
__cpu_disable, __cpu_die and __cpu_up for them to work. Volunteers
appreciated.
This patch allows you to down & up CPUs as follows:
# echo 0 > /proc/sys/cpu/0/online
# echo 1 > /proc/sys/cpu/0/online
The relatively trivial patch works as follows:
1) Implements synchronize_kernel() (thanks Andi Kleen for forwarding
Paul McKenney's quiescent-state ideas) which waits for a schedule
on all CPUs.
2) All CPU numbers are now physical: removes cpu_number_map,
cpu_logical_map and smp_num_cpus.
3) Adds cpu_online(cpu) and cpu_num_online() macros.
4) Adds cpu_down() and cpu_up() calls, which call arch-specific
__cpu_disable(cpu), __cpu_die(cpu) and __cpu_up(cpu).
5) Fixes schedule() to check allowed_cpus even if rescheduling same
task.
Since it's 60k long, mime attached bzip2.
Go hack!
Rusty Russell & Anton Blanchard
--
hotswap CPU patch