[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>
This commit is contained in:
committed by
Linus Torvalds
parent
986733e01d
commit
5afdbd6e84
@@ -249,18 +249,19 @@ static inline void stop_hz_timer(void)
|
|||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
unsigned long seq, next;
|
unsigned long seq, next;
|
||||||
__u64 timer, todval;
|
__u64 timer, todval;
|
||||||
|
int cpu = smp_processor_id();
|
||||||
|
|
||||||
if (sysctl_hz_timer != 0)
|
if (sysctl_hz_timer != 0)
|
||||||
return;
|
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
|
* Leave the clock comparator set up for the next timer
|
||||||
* tick if either rcu or a softirq is pending.
|
* tick if either rcu or a softirq is pending.
|
||||||
*/
|
*/
|
||||||
if (rcu_pending(smp_processor_id()) || local_softirq_pending()) {
|
if (rcu_needs_cpu(cpu) || local_softirq_pending()) {
|
||||||
cpu_clear(smp_processor_id(), nohz_cpu_mask);
|
cpu_clear(cpu, nohz_cpu_mask);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user