1
linux/include
Thomas Gleixner 06d8308c61 NOHZ: reevaluate idle sleep length after add_timer_on()
add_timer_on() can add a timer on a CPU which is currently in a long
idle sleep, but the timer wheel is not reevaluated by the nohz code on
that CPU. So a timer can be delayed for quite a long time. This
triggered a false positive in the clocksource watchdog code.

To avoid this we need to wake up the idle CPU and enforce the
reevaluation of the timer wheel for the next timer event.

Add a function, which checks a given CPU for idle state, marks the
idle task with NEED_RESCHED and sends a reschedule IPI to notify the
other CPU of the change in the timer wheel.

Call this function from add_timer_on().

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Acked-by: Ingo Molnar <mingo@elte.hu>
Cc: stable@kernel.org

--
 include/linux/sched.h |    6 ++++++
 kernel/sched.c        |   43 +++++++++++++++++++++++++++++++++++++++++++
 kernel/timer.c        |   10 +++++++++-
 3 files changed, 58 insertions(+), 1 deletion(-)
2008-03-26 08:28:55 +01:00
..
acpi
asm-alpha
asm-arm [ARM] 4872/1: Replaces buggy macro in S3C2410 irq include 2008-03-20 15:59:32 +00:00
asm-avr32
asm-blackfin [Blackfin] arch: current_l1_stack_save is a pointer, so use NULL rather than 0 2008-03-05 19:02:23 -07:00
asm-cris cris: correct syscall numbers in unistd.h for timerfd_settime and timerfd_gettime 2008-03-04 16:35:16 -08:00
asm-frv FRV: Change the timerfd syscalls to be the same as i386 2008-02-20 19:58:16 -08:00
asm-generic percpu: fix DEBUG_PREEMPT per_cpu checking 2008-02-23 12:09:28 -08:00
asm-h8300 h8300: fix recent uaccess breakage 2008-03-13 13:11:43 -07:00
asm-ia64 [IA64] kprobes arch consolidation build fix 2008-03-06 09:49:01 -08:00
asm-m32r
asm-m68k m68k{,nommu}: Wire up new timerfd syscalls 2008-03-04 08:04:11 -08:00
asm-m68knommu m68k{,nommu}: Wire up new timerfd syscalls 2008-03-04 08:04:11 -08:00
asm-mips [MIPS] Clocksource: Only install r4k counter as clocksource if present. 2008-03-12 14:14:42 +00:00
asm-mn10300 Really unexport asm/page.h 2008-03-06 08:13:47 -08:00
asm-parisc [PARISC] futex: special case cmpxchg NULL in kernel space 2008-03-15 19:12:17 -07:00
asm-powerpc [POWERPC] 8xx: fix swap 2008-03-07 08:42:28 -06:00
asm-ppc [PPC] 8xx: swap bug-fix 2008-03-07 16:56:54 -06:00
asm-s390 Kprobes: indicate kretprobe support in Kconfig 2008-03-04 16:35:11 -08:00
asm-sh sh: Fix more user header breakage from sh64 integration. 2008-03-14 17:21:09 +09:00
asm-sparc [SPARC]: Add reboot_command[] extern decl to asm/system.h 2008-02-28 21:53:20 -08:00
asm-sparc64 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 2008-03-24 13:08:01 -07:00
asm-um
asm-v850
asm-x86 x86-32: Pass the full resource data to ioremap() 2008-03-24 11:22:39 -07:00
asm-xtensa
crypto [CRYPTO] skcipher: Fix section mismatches 2008-03-08 20:29:43 +08:00
keys
linux NOHZ: reevaluate idle sleep length after add_timer_on() 2008-03-26 08:28:55 +01:00
math-emu
media V4L/DVB (7192): Adds support for Genius TVGo A11MCE 2008-02-18 11:15:19 -03:00
mtd
net [SCTP]: Fix build warnings with IPV6 disabled. 2008-03-21 15:40:47 -07:00
pcmcia
rdma
rxrpc
scsi [SCSI] iscsi class: regression - fix races with state manipulation and blocking/unblocking 2008-03-05 12:04:09 -06:00
sound [ALSA] opl3 - Fix compilation without sequencer support 2008-02-22 14:20:08 -08:00
video
xen
Kbuild