diff options
Diffstat (limited to 'kernel/time/tick-sched.c')
-rw-r--r-- | kernel/time/tick-sched.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index 024540f97f74..f423bdd035c2 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c | |||
@@ -372,7 +372,7 @@ static ktime_t tick_nohz_stop_sched_tick(struct tick_sched *ts, | |||
372 | * the scheduler tick in nohz_restart_sched_tick. | 372 | * the scheduler tick in nohz_restart_sched_tick. |
373 | */ | 373 | */ |
374 | if (!ts->tick_stopped) { | 374 | if (!ts->tick_stopped) { |
375 | select_nohz_load_balancer(1); | 375 | nohz_balance_enter_idle(cpu); |
376 | calc_load_enter_idle(); | 376 | calc_load_enter_idle(); |
377 | 377 | ||
378 | ts->last_tick = hrtimer_get_expires(&ts->sched_timer); | 378 | ts->last_tick = hrtimer_get_expires(&ts->sched_timer); |
@@ -436,7 +436,8 @@ static bool can_stop_idle_tick(int cpu, struct tick_sched *ts) | |||
436 | if (unlikely(local_softirq_pending() && cpu_online(cpu))) { | 436 | if (unlikely(local_softirq_pending() && cpu_online(cpu))) { |
437 | static int ratelimit; | 437 | static int ratelimit; |
438 | 438 | ||
439 | if (ratelimit < 10) { | 439 | if (ratelimit < 10 && |
440 | (local_softirq_pending() & SOFTIRQ_STOP_IDLE_MASK)) { | ||
440 | printk(KERN_ERR "NOHZ: local_softirq_pending %02x\n", | 441 | printk(KERN_ERR "NOHZ: local_softirq_pending %02x\n", |
441 | (unsigned int) local_softirq_pending()); | 442 | (unsigned int) local_softirq_pending()); |
442 | ratelimit++; | 443 | ratelimit++; |
@@ -569,10 +570,10 @@ static void tick_nohz_restart(struct tick_sched *ts, ktime_t now) | |||
569 | static void tick_nohz_restart_sched_tick(struct tick_sched *ts, ktime_t now) | 570 | static void tick_nohz_restart_sched_tick(struct tick_sched *ts, ktime_t now) |
570 | { | 571 | { |
571 | /* Update jiffies first */ | 572 | /* Update jiffies first */ |
572 | select_nohz_load_balancer(0); | ||
573 | tick_do_update_jiffies64(now); | 573 | tick_do_update_jiffies64(now); |
574 | update_cpu_load_nohz(); | 574 | update_cpu_load_nohz(); |
575 | 575 | ||
576 | calc_load_exit_idle(); | ||
576 | touch_softlockup_watchdog(); | 577 | touch_softlockup_watchdog(); |
577 | /* | 578 | /* |
578 | * Cancel the scheduled timer and restore the tick | 579 | * Cancel the scheduled timer and restore the tick |