diff options
Diffstat (limited to 'kernel/time/tick-sched.c')
| -rw-r--r-- | kernel/time/tick-sched.c | 15 | 
1 files changed, 2 insertions, 13 deletions
| diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index 813993b5fb61..3e216e01bbd1 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c | |||
| @@ -325,7 +325,7 @@ void tick_nohz_stop_sched_tick(int inidle) | |||
| 325 | } while (read_seqretry(&xtime_lock, seq)); | 325 | } while (read_seqretry(&xtime_lock, seq)); | 
| 326 | 326 | ||
| 327 | if (rcu_needs_cpu(cpu) || printk_needs_cpu(cpu) || | 327 | if (rcu_needs_cpu(cpu) || printk_needs_cpu(cpu) || | 
| 328 | arch_needs_cpu(cpu) || nohz_ratelimit(cpu)) { | 328 | arch_needs_cpu(cpu)) { | 
| 329 | next_jiffies = last_jiffies + 1; | 329 | next_jiffies = last_jiffies + 1; | 
| 330 | delta_jiffies = 1; | 330 | delta_jiffies = 1; | 
| 331 | } else { | 331 | } else { | 
| @@ -405,13 +405,7 @@ void tick_nohz_stop_sched_tick(int inidle) | |||
| 405 | * the scheduler tick in nohz_restart_sched_tick. | 405 | * the scheduler tick in nohz_restart_sched_tick. | 
| 406 | */ | 406 | */ | 
| 407 | if (!ts->tick_stopped) { | 407 | if (!ts->tick_stopped) { | 
| 408 | if (select_nohz_load_balancer(1)) { | 408 | select_nohz_load_balancer(1); | 
| 409 | /* | ||
| 410 | * sched tick not stopped! | ||
| 411 | */ | ||
| 412 | cpumask_clear_cpu(cpu, nohz_cpu_mask); | ||
| 413 | goto out; | ||
| 414 | } | ||
| 415 | 409 | ||
| 416 | ts->idle_tick = hrtimer_get_expires(&ts->sched_timer); | 410 | ts->idle_tick = hrtimer_get_expires(&ts->sched_timer); | 
| 417 | ts->tick_stopped = 1; | 411 | ts->tick_stopped = 1; | 
| @@ -780,7 +774,6 @@ void tick_setup_sched_timer(void) | |||
| 780 | { | 774 | { | 
| 781 | struct tick_sched *ts = &__get_cpu_var(tick_cpu_sched); | 775 | struct tick_sched *ts = &__get_cpu_var(tick_cpu_sched); | 
| 782 | ktime_t now = ktime_get(); | 776 | ktime_t now = ktime_get(); | 
| 783 | u64 offset; | ||
| 784 | 777 | ||
| 785 | /* | 778 | /* | 
| 786 | * Emulate tick processing via per-CPU hrtimers: | 779 | * Emulate tick processing via per-CPU hrtimers: | 
| @@ -790,10 +783,6 @@ void tick_setup_sched_timer(void) | |||
| 790 | 783 | ||
| 791 | /* Get the next period (per cpu) */ | 784 | /* Get the next period (per cpu) */ | 
| 792 | hrtimer_set_expires(&ts->sched_timer, tick_init_jiffy_update()); | 785 | hrtimer_set_expires(&ts->sched_timer, tick_init_jiffy_update()); | 
| 793 | offset = ktime_to_ns(tick_period) >> 1; | ||
| 794 | do_div(offset, num_possible_cpus()); | ||
| 795 | offset *= smp_processor_id(); | ||
| 796 | hrtimer_add_expires_ns(&ts->sched_timer, offset); | ||
| 797 | 786 | ||
| 798 | for (;;) { | 787 | for (;;) { | 
| 799 | hrtimer_forward(&ts->sched_timer, now, tick_period); | 788 | hrtimer_forward(&ts->sched_timer, now, tick_period); | 
