diff options
Diffstat (limited to 'kernel/time')
-rw-r--r-- | kernel/time/tick-sched.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index f4fc867f467d..3483e6cb9549 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c | |||
@@ -217,6 +217,14 @@ void tick_nohz_stop_sched_tick(void) | |||
217 | * the scheduler tick in nohz_restart_sched_tick. | 217 | * the scheduler tick in nohz_restart_sched_tick. |
218 | */ | 218 | */ |
219 | if (!ts->tick_stopped) { | 219 | if (!ts->tick_stopped) { |
220 | if (select_nohz_load_balancer(1)) { | ||
221 | /* | ||
222 | * sched tick not stopped! | ||
223 | */ | ||
224 | cpu_clear(cpu, nohz_cpu_mask); | ||
225 | goto out; | ||
226 | } | ||
227 | |||
220 | ts->idle_tick = ts->sched_timer.expires; | 228 | ts->idle_tick = ts->sched_timer.expires; |
221 | ts->tick_stopped = 1; | 229 | ts->tick_stopped = 1; |
222 | ts->idle_jiffies = last_jiffies; | 230 | ts->idle_jiffies = last_jiffies; |
@@ -285,6 +293,7 @@ void tick_nohz_restart_sched_tick(void) | |||
285 | now = ktime_get(); | 293 | now = ktime_get(); |
286 | 294 | ||
287 | local_irq_disable(); | 295 | local_irq_disable(); |
296 | select_nohz_load_balancer(0); | ||
288 | tick_do_update_jiffies64(now); | 297 | tick_do_update_jiffies64(now); |
289 | cpu_clear(cpu, nohz_cpu_mask); | 298 | cpu_clear(cpu, nohz_cpu_mask); |
290 | 299 | ||