linux/kernel/time
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
..
clockevents.c [PATCH] clockevents: remove bad designed sysfs support for now 2007-03-26 14:07:23 -07:00
clocksource.c [PATCH] clocksource: Fix thinko in watchdog selection 2007-03-25 14:57:34 -07:00
jiffies.c [PATCH] fix jiffies clocksource inittime 2007-04-04 21:12:47 -07:00
Kconfig [PATCH] hrtimers: add high resolution timer support 2007-02-16 08:13:59 -08:00
Makefile Move timekeeping code to timekeeping.c 2007-05-08 11:15:06 -07:00
ntp.c [PATCH] ntp: avoid time_offset overflows 2007-03-27 09:05:15 -07:00
tick-broadcast.c [PATCH] clockevents: Fix suspend/resume to disk hangs 2007-03-16 19:35:25 -07:00
tick-common.c highres/dyntick: prevent xtime lock contention 2007-05-08 11:15:10 -07:00
tick-internal.h highres/dyntick: prevent xtime lock contention 2007-05-08 11:15:10 -07:00
tick-oneshot.c [PATCH] clockevents: Fix suspend/resume to disk hangs 2007-03-16 19:35:25 -07:00
tick-sched.c highres/dyntick: prevent xtime lock contention 2007-05-08 11:15:10 -07:00
timekeeping.c Move timekeeping code to timekeeping.c 2007-05-08 11:15:06 -07:00
timer_list.c Fix race between cat /proc/*/wchan and rmmod et al 2007-05-08 11:15:08 -07:00
timer_stats.c Fix race between cat /proc/*/wchan and rmmod et al 2007-05-08 11:15:08 -07:00