diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2006-05-15 18:43:59 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-05-15 20:20:55 +0200 |
commit | 5afdbd6e84c7fbdaa7cfde4cbee0d3a5f4f56da2 (patch) | |
tree | 9b4c317054b833245372f0c0e64b015469825479 /arch/s390 | |
parent | [PATCH] RCU: introduce rcu_needs_cpu() interface (diff) | |
download | linux-5afdbd6e84c7fbdaa7cfde4cbee0d3a5f4f56da2.tar.xz linux-5afdbd6e84c7fbdaa7cfde4cbee0d3a5f4f56da2.zip |
[PATCH] s390: exploit rcu_needs_cpu() interface
Exploit rcu_needs_cpu() interface to keep the cpu 'ticking' if necessary.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/kernel/time.c | 7 |
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) unsigned long flags; unsigned long seq, next; __u64 timer, todval; + int cpu = smp_processor_id(); if (sysctl_hz_timer != 0) return; - cpu_set(smp_processor_id(), nohz_cpu_mask); + cpu_set(cpu, nohz_cpu_mask); /* * Leave the clock comparator set up for the next timer * tick if either rcu or a softirq is pending. */ - if (rcu_pending(smp_processor_id()) || local_softirq_pending()) { - cpu_clear(smp_processor_id(), nohz_cpu_mask); + if (rcu_needs_cpu(cpu) || local_softirq_pending()) { + cpu_clear(cpu, nohz_cpu_mask); return; } |