diff options
Diffstat (limited to 'kernel/time/tick-sched.c')
-rw-r--r-- | kernel/time/tick-sched.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index 7378e2c71ca6..3840f6dff7eb 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c | |||
@@ -264,12 +264,15 @@ void tick_nohz_stop_sched_tick(int inidle) | |||
264 | last_jiffies = jiffies; | 264 | last_jiffies = jiffies; |
265 | } while (read_seqretry(&xtime_lock, seq)); | 265 | } while (read_seqretry(&xtime_lock, seq)); |
266 | 266 | ||
267 | /* Get the next timer wheel timer */ | 267 | if (rcu_needs_cpu(cpu) || printk_needs_cpu(cpu) || |
268 | next_jiffies = get_next_timer_interrupt(last_jiffies); | 268 | arch_needs_cpu(cpu)) { |
269 | delta_jiffies = next_jiffies - last_jiffies; | 269 | next_jiffies = last_jiffies + 1; |
270 | |||
271 | if (rcu_needs_cpu(cpu) || printk_needs_cpu(cpu)) | ||
272 | delta_jiffies = 1; | 270 | delta_jiffies = 1; |
271 | } else { | ||
272 | /* Get the next timer wheel timer */ | ||
273 | next_jiffies = get_next_timer_interrupt(last_jiffies); | ||
274 | delta_jiffies = next_jiffies - last_jiffies; | ||
275 | } | ||
273 | /* | 276 | /* |
274 | * Do not stop the tick, if we are only one off | 277 | * Do not stop the tick, if we are only one off |
275 | * or if the cpu is required for rcu | 278 | * or if the cpu is required for rcu |