mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: linux-kernel@vger.kernel.org
Cc: mingo@kernel.org, jiangshanlai@gmail.com, dipankar@in.ibm.com,
	akpm@linux-foundation.org, mathieu.desnoyers@efficios.com,
	josh@joshtriplett.org, tglx@linutronix.de, peterz@infradead.org,
	rostedt@goodmis.org, dhowells@redhat.com, edumazet@google.com,
	dvhart@linux.intel.com, fweisbec@gmail.com, oleg@redhat.com,
	bobby.prani@gmail.com,
	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Subject: [PATCH tip/core/rcu 04/13] rcu: Set rdp->gpwrap when CPU is idle
Date: Tue, 23 Feb 2016 21:12:41 -0800	[thread overview]
Message-ID: <1456290770-18659-4-git-send-email-paulmck@linux.vnet.ibm.com> (raw)
In-Reply-To: <20160224051221.GA17099@linux.vnet.ibm.com>

Commit #e3663b1024d1 ("rcu: Handle gpnum/completed wrap while dyntick
idle") sets rdp->gpwrap on the wrong side of the "if" statement in
dyntick_save_progress_counter(), that is, it sets it when the CPU is
not idle instead of when it is idle.  Of course, if the CPU is not idle,
its rdp->gpnum won't be lagging beind the global rsp->gpnum, which means
that rdp->gpwrap will never be set.

This commit therefore moves this code to the proper leg of that "if"
statement.  This change means that the "else" cause is just "return 0"
and the "then" clause ends with "return 1", so also move the "return 0"
to follow the "if", dropping the "else" clause.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 kernel/rcu/tree.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index 68f4bee3ecc3..976a166f3fa3 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -1083,13 +1083,12 @@ static int dyntick_save_progress_counter(struct rcu_data *rdp,
 	rcu_sysidle_check_cpu(rdp, isidle, maxj);
 	if ((rdp->dynticks_snap & 0x1) == 0) {
 		trace_rcu_fqs(rdp->rsp->name, rdp->gpnum, rdp->cpu, TPS("dti"));
-		return 1;
-	} else {
 		if (ULONG_CMP_LT(READ_ONCE(rdp->gpnum) + ULONG_MAX / 4,
 				 rdp->mynode->gpnum))
 			WRITE_ONCE(rdp->gpwrap, true);
-		return 0;
+		return 1;
 	}
+	return 0;
 }
 
 /*
-- 
2.5.2

  parent reply	other threads:[~2016-02-24  5:13 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-24  5:12 [PATCH tip/core/rcu 0/13] Miscellaneous fixes for 4.6 Paul E. McKenney
2016-02-24  5:12 ` [PATCH tip/core/rcu 01/13] rcu: Assign false instead of 0 for ->core_needs_qs Paul E. McKenney
2016-02-24  5:12 ` [PATCH tip/core/rcu 02/13] rcu: Update rcu_report_qs_rsp() comment Paul E. McKenney
2016-02-24  5:12 ` [PATCH tip/core/rcu 03/13] rcu: Stop treating in-kernel CPU-bound workloads as errors Paul E. McKenney
2016-02-25  9:43   ` Peter Zijlstra
2016-02-25 17:20     ` Paul E. McKenney
2016-02-24  5:12 ` Paul E. McKenney [this message]
2016-02-24  5:12 ` [PATCH tip/core/rcu 05/13] rcutorture: Correct no-expedite console messages Paul E. McKenney
2016-02-24  5:12 ` [PATCH tip/core/rcu 06/13] rcu: Remove useless rcu_data_p when !PREEMPT_RCU Paul E. McKenney
2016-02-24  5:12 ` [PATCH tip/core/rcu 07/13] sparse: Add __private to privatize members of structs Paul E. McKenney
2016-02-24  5:12 ` [PATCH tip/core/rcu 08/13] RCU: Privatize rcu_node::lock Paul E. McKenney
2016-02-24  5:12 ` [PATCH tip/core/rcu 09/13] irq: Privatize irq_common_data::state_use_accessors Paul E. McKenney
2016-02-24  5:12 ` [PATCH tip/core/rcu 10/13] rcu: Make rcu/tiny_plugin.h explicitly non-modular Paul E. McKenney
2016-02-24  5:12 ` [PATCH tip/core/rcu 11/13] rcu: Document unique-name limitation for DEFINE_STATIC_SRCU() Paul E. McKenney
2016-02-24  5:12 ` [PATCH tip/core/rcu 12/13] rcu: Catch up rcu_report_qs_rdp() comment with reality Paul E. McKenney
2016-02-24  5:12 ` [PATCH tip/core/rcu 13/13] rcu: Remove rcu_user_hooks_switch Paul E. McKenney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1456290770-18659-4-git-send-email-paulmck@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=bobby.prani@gmail.com \
    --cc=dhowells@redhat.com \
    --cc=dipankar@in.ibm.com \
    --cc=dvhart@linux.intel.com \
    --cc=edumazet@google.com \
    --cc=fweisbec@gmail.com \
    --cc=jiangshanlai@gmail.com \
    --cc=josh@joshtriplett.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mingo@kernel.org \
    --cc=oleg@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®