linux-stable-rt/kernel
Thomas Gleixner d3ed782458 highres/dyntick: prevent xtime lock contention
While the !highres/!dyntick code assigns the duty of the do_timer() call to
one specific CPU, this was dropped in the highres/dyntick part during
development.

Steven Rostedt discovered the xtime lock contention on highres/dyntick due
to several CPUs trying to update jiffies.

Add the single CPU assignement back.  In the dyntick case this needs to be
handled carefully, as the CPU which has the do_timer() duty must drop the
assignement and let it be grabbed by another CPU, which is active.
Otherwise the do_timer() calls would not happen during the long sleep.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Ingo Molnar <mingo@elte.hu>
Cc: Steven Rostedt <rostedt@goodmis.org>
Acked-by: Mark Lord <mlord@pobox.com>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-08 11:15:10 -07:00
..
irq Pad irq_desc to internode cacheline size 2007-05-08 11:15:09 -07:00
power header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
time highres/dyntick: prevent xtime lock contention 2007-05-08 11:15:10 -07:00
.gitignore
Kconfig.hz
Kconfig.preempt
Makefile move die notifier handling to common code 2007-05-08 11:15:04 -07:00
acct.c
audit.c audit: add spaces on either side of case "..." operator. 2007-05-08 11:15:09 -07:00
audit.h
auditfilter.c
auditsc.c
capability.c
compat.c
configs.c
cpu.c
cpuset.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
delayacct.c KMEM_CACHE(): simplify slab cache creation 2007-05-07 12:12:55 -07:00
die_notifier.c move die notifier handling to common code 2007-05-08 11:15:04 -07:00
dma.c
exec_domain.c
exit.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
extable.c
fork.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
futex.c futex: restartable futex_wait 2007-05-08 11:15:03 -07:00
futex_compat.c
hrtimer.c
itimer.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
kallsyms.c kallsyms: cleanup: use seq_release_private() where appropriate 2007-05-08 11:15:09 -07:00
kexec.c kdump/kexec: calculate note size at compile time 2007-05-08 11:15:07 -07:00
kfifo.c
kmod.c Fix kevent's childs priority greediness 2007-05-08 11:15:07 -07:00
kprobes.c Simplify kallsyms_lookup() 2007-05-08 11:15:08 -07:00
ksysfs.c remove "struct subsystem" as it is no longer needed 2007-05-02 18:57:59 -07:00
kthread.c
latency.c
lockdep.c Simplify kallsyms_lookup() 2007-05-08 11:15:08 -07:00
lockdep_internals.h
lockdep_proc.c
module.c Fix race between cat /proc/slab_allocators and rmmod 2007-05-08 11:15:08 -07:00
mutex-debug.c
mutex-debug.h
mutex.c
mutex.h
nsproxy.c Merge sys_clone()/sys_unshare() nsproxy and namespace handling 2007-05-08 11:15:00 -07:00
panic.c
params.c kernel/params.c: fix lying comment for param_array() 2007-05-08 11:15:08 -07:00
pid.c Merge sys_clone()/sys_unshare() nsproxy and namespace handling 2007-05-08 11:15:00 -07:00
posix-cpu-timers.c
posix-timers.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
printk.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
profile.c
ptrace.c
rcupdate.c
rcutorture.c rcutorture: Mark rcu_torture_init as __init 2007-05-08 11:15:00 -07:00
relay.c
resource.c
rtmutex-debug.c
rtmutex-debug.h
rtmutex-tester.c
rtmutex.c
rtmutex.h
rtmutex_common.h
rwsem.c Lockdep treats down_write_trylock like regular down_write 2007-05-08 11:15:09 -07:00
sched.c add touch_all_softlockup_watchdogs() 2007-05-08 11:15:06 -07:00
seccomp.c
signal.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
softirq.c
softlockup.c add touch_all_softlockup_watchdogs() 2007-05-08 11:15:06 -07:00
spinlock.c
srcu.c
stacktrace.c
stop_machine.c Use stop_machine_run in the Intel RNG driver 2007-05-08 11:15:00 -07:00
sys.c remove software_suspend() 2007-05-07 12:12:59 -07:00
sys_ni.c
sysctl.c proc: maps protection 2007-05-08 11:15:02 -07:00
taskstats.c KMEM_CACHE(): simplify slab cache creation 2007-05-07 12:12:55 -07:00
time.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
timer.c Move timekeeping code to timekeeping.c 2007-05-08 11:15:06 -07:00
tsacct.c
uid16.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
user.c
utsname.c Merge sys_clone()/sys_unshare() nsproxy and namespace handling 2007-05-08 11:15:00 -07:00
utsname_sysctl.c
wait.c
workqueue.c