kernel_optimize_test/kernel
Max Krasnyansky 39b0fad712 cpu hotplug: Make cpu_active_map synchronization dependency clear
This goes on top of the cpu_active_map (take 2) patch.

Currently we depend on the stop_machine to provide nescessesary
synchronization for the cpu_active_map updates.
As Dmitry Adamushko pointed this is fragile and is not much clearer
than the previous scheme. In other words we do not want to depend on
the internal stop machine operation here.
So make the synchronization rules clear by doing synchronize_sched()
after clearing out cpu active bit.

Tested on quad-Core2 with:

   while true; do
      for i in 1 2 3; do
        echo 0 > /sys/devices/system/cpu/cpu$i/online
      done
      for i in 1 2 3; do
        echo 1 > /sys/devices/system/cpu/cpu$i/online
      done
   done
and
   stress -c 200

No lockdep, preempt or other complaints.

Signed-off-by: Max Krasnyansky <maxk@qualcomm.com>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-07-18 13:23:18 +02:00
..
irq
power
time
trace
.gitignore
acct.c
audit_tree.c
audit.c
audit.h
auditfilter.c
auditsc.c
backtracetest.c
bounds.c
capability.c
cgroup_debug.c
cgroup.c
compat.c
configs.c
cpu.c cpu hotplug: Make cpu_active_map synchronization dependency clear 2008-07-18 13:23:18 +02:00
cpuset.c cpu hotplug, sched: Introduce cpu_active_map and redo sched domain managment (take 2) 2008-07-18 13:22:25 +02:00
delayacct.c
dma.c
exec_domain.c
exit.c fix dangling zombie when new parent ignores children 2008-07-16 18:02:34 -07:00
extable.c
fork.c ptrace children revamp 2008-07-16 18:02:33 -07:00
futex_compat.c
futex.c
hrtimer.c
itimer.c
kallsyms.c
Kconfig.hz
Kconfig.preempt
kexec.c
kfifo.c
kgdb.c
kmod.c
kprobes.c
ksysfs.c
kthread.c
latencytop.c
lockdep_internals.h
lockdep_proc.c
lockdep.c
Makefile Revert parts of "ftrace: do not trace scheduler functions" 2008-07-18 08:59:24 +02:00
marker.c
module.c
mutex-debug.c
mutex-debug.h
mutex.c
mutex.h
notifier.c
ns_cgroup.c
nsproxy.c
panic.c
params.c
pid_namespace.c
pid.c
pm_qos_params.c
posix-cpu-timers.c
posix-timers.c
printk.c
profile.c
ptrace.c ptrace children revamp 2008-07-16 18:02:33 -07:00
rcuclassic.c
rcupdate.c
rcupreempt_trace.c
rcupreempt.c
rcutorture.c
relay.c
res_counter.c
resource.c
rtmutex_common.h
rtmutex-debug.c
rtmutex-debug.h
rtmutex-tester.c
rtmutex.c
rtmutex.h
rwsem.c
sched_clock.c
sched_cpupri.c
sched_cpupri.h
sched_debug.c
sched_fair.c cpu hotplug, sched: Introduce cpu_active_map and redo sched domain managment (take 2) 2008-07-18 13:22:25 +02:00
sched_features.h
sched_idletask.c
sched_rt.c cpu hotplug, sched: Introduce cpu_active_map and redo sched domain managment (take 2) 2008-07-18 13:22:25 +02:00
sched_stats.h
sched.c cpu hotplug, sched: Introduce cpu_active_map and redo sched domain managment (take 2) 2008-07-18 13:22:25 +02:00
seccomp.c
semaphore.c
signal.c
smp.c
softirq.c
softlockup.c
spinlock.c
srcu.c
stacktrace.c
stop_machine.c
sys_ni.c
sys.c
sysctl_check.c
sysctl.c
taskstats.c
test_kprobes.c
time.c
timeconst.pl
timer.c
tsacct.c
uid16.c
user_namespace.c
user.c
utsname_sysctl.c
utsname.c
wait.c
workqueue.c