1 diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
2 index b854a89..26f5569 100644
3 --- a/kernel/time/tick-sched.c
4 +++ b/kernel/time/tick-sched.c
5 @@ -253,6 +253,16 @@ void tick_nohz_stop_sched_tick(void)
7 /* Schedule the tick, if we are at least one jiffie off */
8 if ((long)delta_jiffies >= 1) {
10 + * calculate the expiry time for the next timer wheel
13 + expires = ktime_add_ns(last_update, tick_period.tv64 *
16 + /* Skip reprogram of event if its not changed */
17 + if(ts->tick_stopped && ktime_equal(expires, dev->next_event))
20 if (delta_jiffies > 1)
21 cpu_set(cpu, nohz_cpu_mask);
22 @@ -304,12 +314,7 @@ void tick_nohz_stop_sched_tick(void)
27 - * calculate the expiry time for the next timer wheel
30 - expires = ktime_add_ns(last_update, tick_period.tv64 *
33 ts->idle_expires = expires;
35 if (ts->nohz_mode == NOHZ_MODE_HIGHRES) {
36 @@ -328,6 +333,7 @@ void tick_nohz_stop_sched_tick(void)
37 tick_do_update_jiffies64(ktime_get());
38 cpu_clear(cpu, nohz_cpu_mask);
41 raise_softirq_irqoff(TIMER_SOFTIRQ);
43 ts->next_jiffies = next_jiffies;