diff options
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 99b00a25f88..b024106daa7 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  | 
