Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.6.25-rc7-git3 /kernel/timer.c

Filename:/kernel/timer.c
Lines Added:9
Lines Deleted:1
Also changed in: (Previous) 2.6.25-rc7-git2  2.6.25-rc7-git1  2.6.25-rc7  2.6.25-rc6  2.6.25-rc5  2.6.25-rc4 
(Following) 2.6.25-rc7-git4  2.6.25-rc7-git5  2.6.25-rc7-git6  2.6.25-rc8  2.6.25-rc9  2.6.25 

Location
[  2.6.25-rc7-git3
  [  kernel
     o  timer.c

Patch

diff --git a/kernel/timer.c b/kernel/timer.c
index 99b00a2..b024106 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -451,10 +451,18 @@ void add_timer_on(struct timer_list *timer, int cpu)
    spin_lock_irqsave(&base->lock, flags);
    timer_set_base(timer, base);
    internal_add_timer(base, timer);
+   /*
+    * Check whether the other CPU is idle and needs to be
+    * triggered to reevaluate the timer wheel when nohz is
+    * active. We are protected against the other CPU fiddling
+    * with the timer by holding the timer base lock. This also
+    * makes sure that a CPU on the way to idle can not evaluate
+    * the timer wheel.
+    */
+   wake_up_idle_cpu(cpu);
    spin_unlock_irqrestore(&base->lock, flags);
 }
 
-
 /**
  * mod_timer - modify a timer's timeout
  * @timer: the timer to be modified


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.