|
@@ -264,12 +264,15 @@ void tick_nohz_stop_sched_tick(int inidle)
|
|
|
last_jiffies = jiffies;
|
|
|
} while (read_seqretry(&xtime_lock, seq));
|
|
|
|
|
|
- /* Get the next timer wheel timer */
|
|
|
- next_jiffies = get_next_timer_interrupt(last_jiffies);
|
|
|
- delta_jiffies = next_jiffies - last_jiffies;
|
|
|
-
|
|
|
- if (rcu_needs_cpu(cpu) || printk_needs_cpu(cpu))
|
|
|
+ if (rcu_needs_cpu(cpu) || printk_needs_cpu(cpu) ||
|
|
|
+ arch_needs_cpu(cpu)) {
|
|
|
+ next_jiffies = last_jiffies + 1;
|
|
|
delta_jiffies = 1;
|
|
|
+ } else {
|
|
|
+ /* Get the next timer wheel timer */
|
|
|
+ next_jiffies = get_next_timer_interrupt(last_jiffies);
|
|
|
+ delta_jiffies = next_jiffies - last_jiffies;
|
|
|
+ }
|
|
|
/*
|
|
|
* Do not stop the tick, if we are only one off
|
|
|
* or if the cpu is required for rcu
|