diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-03-26 14:29:35 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-03-26 14:29:35 -0400 |
| commit | 8f404faa72f4e458e7bd81ac75ce55ae829e953d (patch) | |
| tree | 46b70d6d86fc619343b4986160bda5e46b86bb18 /kernel/timer.c | |
| parent | 729eb528c7e10a4828fece102872ec5255946f64 (diff) | |
| parent | 06d8308c61e54346585b2691c13ee3f90cb6fb2f (diff) | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/tglx/linux-2.6-hrt
* 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/tglx/linux-2.6-hrt:
NOHZ: reevaluate idle sleep length after add_timer_on()
clocksource: revert: use init_timer_deferrable for clocksource_watchdog
Diffstat (limited to 'kernel/timer.c')
| -rw-r--r-- | kernel/timer.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/kernel/timer.c b/kernel/timer.c index 99b00a25f88b..b024106daa70 100644 --- a/kernel/timer.c +++ b/kernel/timer.c | |||
| @@ -451,10 +451,18 @@ void add_timer_on(struct timer_list *timer, int cpu) | |||
| 451 | spin_lock_irqsave(&base->lock, flags); | 451 | spin_lock_irqsave(&base->lock, flags); |
| 452 | timer_set_base(timer, base); | 452 | timer_set_base(timer, base); |
| 453 | internal_add_timer(base, timer); | 453 | internal_add_timer(base, timer); |
| 454 | /* | ||
| 455 | * Check whether the other CPU is idle and needs to be | ||
| 456 | * triggered to reevaluate the timer wheel when nohz is | ||
| 457 | * active. We are protected against the other CPU fiddling | ||
| 458 | * with the timer by holding the timer base lock. This also | ||
| 459 | * makes sure that a CPU on the way to idle can not evaluate | ||
| 460 | * the timer wheel. | ||
| 461 | */ | ||
| 462 | wake_up_idle_cpu(cpu); | ||
| 454 | spin_unlock_irqrestore(&base->lock, flags); | 463 | spin_unlock_irqrestore(&base->lock, flags); |
| 455 | } | 464 | } |
| 456 | 465 | ||
| 457 | |||
| 458 | /** | 466 | /** |
| 459 | * mod_timer - modify a timer's timeout | 467 | * mod_timer - modify a timer's timeout |
| 460 | * @timer: the timer to be modified | 468 | * @timer: the timer to be modified |
