Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5afdbd6e authored by Heiko Carstens's avatar Heiko Carstens Committed by Linus Torvalds
Browse files

[PATCH] s390: exploit rcu_needs_cpu() interface



Exploit rcu_needs_cpu() interface to keep the cpu 'ticking' if necessary.

Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 986733e0
Loading
Loading
Loading
Loading
+4 −3
Original line number Original line Diff line number Diff line
@@ -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;
	}
	}