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

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

Advertisement

Kernel v2.6.24.6 /kernel/timer.c

Filename:/kernel/timer.c
Lines Added:9
Lines Deleted:1
Also changed in: (Previous) 2.6.24.5  2.6.24.5-rc2  2.6.24.5-rc1  2.6.24-git22  2.6.24-git21  2.6.24-git20 
(Following) 2.6.24.7  2.6.25-git19  2.6.25-git20  2.6.26-rc1  2.6.26-rc2  2.6.26-rc3 

Location
[  2.6.24.6
  [  kernel
     o  timer.c

Patch

diff --git a/kernel/timer.c b/kernel/timer.c
index 2a00c22..4ee4f89 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -453,10 +453,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.