All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@kernel.org>
To: rcu@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com,
	rostedt@goodmis.org, Zqiang <qiang1.zhang@intel.com>,
	"Paul E . McKenney" <paulmck@kernel.org>
Subject: [PATCH rcu 02/10] rcu: Update rcu_preempt_deferred_qs() comments for !PREEMPT kernels
Date: Wed, 31 Aug 2022 11:07:57 -0700	[thread overview]
Message-ID: <20220831180805.2693546-2-paulmck@kernel.org> (raw)
In-Reply-To: <20220831180759.GA2693289@paulmck-ThinkPad-P17-Gen-1>

From: Zqiang <qiang1.zhang@intel.com>

In non-premptible kernels, tasks never do context switches within
RCU read-side critical sections.  Therefore, in such kernels, each
leaf rcu_node structure's ->blkd_tasks list will always be empty.
The comment on the non-preemptible version of rcu_preempt_deferred_qs()
confuses this point, so this commit therefore fixes it.

Signed-off-by: Zqiang <qiang1.zhang@intel.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
 kernel/rcu/tree_plugin.h | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h
index 86772c95ed0ae..4152816dd29f6 100644
--- a/kernel/rcu/tree_plugin.h
+++ b/kernel/rcu/tree_plugin.h
@@ -932,10 +932,13 @@ static notrace bool rcu_preempt_need_deferred_qs(struct task_struct *t)
 	return false;
 }
 
-// Except that we do need to respond to a request by an expedited grace
-// period for a quiescent state from this CPU.  Note that requests from
-// tasks are handled when removing the task from the blocked-tasks list
-// below.
+// Except that we do need to respond to a request by an expedited
+// grace period for a quiescent state from this CPU.  Note that in
+// non-preemptible kernels, there can be no context switches within RCU
+// read-side critical sections, which in turn means that the leaf rcu_node
+// structure's blocked-tasks list is always empty.  is therefore no need to
+// actually check it.  Instead, a quiescent state from this CPU suffices,
+// and this function is only called from such a quiescent state.
 notrace void rcu_preempt_deferred_qs(struct task_struct *t)
 {
 	struct rcu_data *rdp = this_cpu_ptr(&rcu_data);
-- 
2.31.1.189.g2e36527f23


  parent reply	other threads:[~2022-08-31 18:08 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-31 18:07 [PATCH rcu 0/7] Miscellaneous fixes for v6.1 Paul E. McKenney
2022-08-31 18:07 ` [PATCH rcu 01/10] rcu: Fix rcu_read_unlock_strict() strict QS reporting Paul E. McKenney
2022-08-31 18:07 ` Paul E. McKenney [this message]
2022-08-31 18:07 ` [PATCH rcu 03/10] rcu: Add QS check in rcu_exp_handler() for non-preemptible kernels Paul E. McKenney
2022-09-07 12:10   ` Frederic Weisbecker
2022-09-07 14:57     ` Paul E. McKenney
2022-09-07 15:14       ` Frederic Weisbecker
2022-08-31 18:07 ` [PATCH rcu 04/10] rcu: Make tiny RCU support leak callbacks for debug-object errors Paul E. McKenney
2022-08-31 18:08 ` [PATCH rcu 05/10] rcu: Document reason for rcu_all_qs() call to preempt_disable() Paul E. McKenney
2022-08-31 18:08 ` [PATCH rcu 06/10] rcu: Update rcu_access_pointer() header for rcu_dereference_protected() Paul E. McKenney
2022-08-31 18:08 ` [PATCH rcu 07/10] sched/debug: Try trigger_single_cpu_backtrace(cpu) in dump_cpu_task() Paul E. McKenney
2022-08-31 18:08 ` [PATCH rcu 08/10] sched/debug: Show the registers of 'current' " Paul E. McKenney
2022-08-31 18:08 ` [PATCH rcu 09/10] rcu: Avoid triggering strict-GP irq-work when RCU is idle Paul E. McKenney
2022-08-31 18:08 ` [PATCH rcu 10/10] rcu: Exclude outgoing CPU when it is the last to leave 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=20220831180805.2693546-2-paulmck@kernel.org \
    --to=paulmck@kernel.org \
    --cc=kernel-team@fb.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=qiang1.zhang@intel.com \
    --cc=rcu@vger.kernel.org \
    --cc=rostedt@goodmis.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.