aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/time.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/kernel/time.c')
-rw-r--r--arch/s390/kernel/time.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c
index fea043b69b91..029f09901b85 100644
--- a/arch/s390/kernel/time.c
+++ b/arch/s390/kernel/time.c
@@ -249,18 +249,19 @@ static inline void stop_hz_timer(void)
249 unsigned long flags; 249 unsigned long flags;
250 unsigned long seq, next; 250 unsigned long seq, next;
251 __u64 timer, todval; 251 __u64 timer, todval;
252 int cpu = smp_processor_id();
252 253
253 if (sysctl_hz_timer != 0) 254 if (sysctl_hz_timer != 0)
254 return; 255 return;
255 256
256 cpu_set(smp_processor_id(), nohz_cpu_mask); 257 cpu_set(cpu, nohz_cpu_mask);
257 258
258 /* 259 /*
259 * Leave the clock comparator set up for the next timer 260 * Leave the clock comparator set up for the next timer
260 * tick if either rcu or a softirq is pending. 261 * tick if either rcu or a softirq is pending.
261 */ 262 */
262 if (rcu_pending(smp_processor_id()) || local_softirq_pending()) { 263 if (rcu_needs_cpu(cpu) || local_softirq_pending()) {
263 cpu_clear(smp_processor_id(), nohz_cpu_mask); 264 cpu_clear(cpu, nohz_cpu_mask);
264 return; 265 return;
265 } 266 }
266 267