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@meta.com,
	rostedt@goodmis.org, Joel Fernandes <joelagnelf@nvidia.com>,
	"Paul E . McKenney" <paulmck@kernel.org>
Subject: [PATCH RFC 05/16] rcu: introduce rcu_defer_qs_clear() helper
Date: Thu, 30 Jul 2026 18:01:42 -0700	[thread overview]
Message-ID: <20260731010153.3531313-5-paulmck@kernel.org> (raw)
In-Reply-To: <9de287bc-e565-4f21-bd3c-5c17792e6abc@paulmck-laptop>

From: Joel Fernandes <joelagnelf@nvidia.com>

Currently rdp->defer_qs_pending transitions from DEFER_QS_PENDING to
DEFER_QS_IDLE at two sites: rcu_preempt_deferred_qs_irqrestore() and
rcu_preempt_deferred_qs_handler() (depth>0 reset).  Both write the
IDLE value directly.

Introduce a single inline helper rcu_defer_qs_clear() in tree.h and
route both sites through it.  This becomes the single
PENDING->IDLE transition point for upcoming work.

Signed-off-by: Joel Fernandes <joelagnelf@nvidia.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
 kernel/rcu/tree.h        | 5 +++++
 kernel/rcu/tree_plugin.h | 4 ++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h
index 7dfc57e9adb18e..4069132f9d4446 100644
--- a/kernel/rcu/tree.h
+++ b/kernel/rcu/tree.h
@@ -296,6 +296,11 @@ struct rcu_data {
 	int cpu;
 };
 
+static inline void rcu_defer_qs_clear(struct rcu_data *rdp)
+{
+	WRITE_ONCE(rdp->defer_qs_pending, DEFER_QS_IDLE);
+}
+
 /* Values for nocb_defer_wakeup field in struct rcu_data. */
 #define RCU_NOCB_WAKE_NOT	0
 #define RCU_NOCB_WAKE_BYPASS	1
diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h
index 95ad967adcf3cb..8637f405cb472f 100644
--- a/kernel/rcu/tree_plugin.h
+++ b/kernel/rcu/tree_plugin.h
@@ -488,7 +488,7 @@ rcu_preempt_deferred_qs_irqrestore(struct task_struct *t, unsigned long flags)
 
 	rdp = this_cpu_ptr(&rcu_data);
 	if (rdp->defer_qs_pending == DEFER_QS_PENDING)
-		rdp->defer_qs_pending = DEFER_QS_IDLE;
+		rcu_defer_qs_clear(rdp);
 
 	/*
 	 * If RCU core is waiting for this CPU to exit its critical section,
@@ -645,7 +645,7 @@ static void rcu_preempt_deferred_qs_handler(struct irq_work *iwp)
 	 * 5. Deferred QS reporting does not happen.
 	 */
 	if (rcu_preempt_depth() > 0)
-		WRITE_ONCE(rdp->defer_qs_pending, DEFER_QS_IDLE);
+		rcu_defer_qs_clear(rdp);
 }
 
 /*
-- 
2.40.1


  parent reply	other threads:[~2026-07-31  1:01 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-16  0:23 [PATCH 0/10] Miscellaneous RCU updates for v7.3 Paul E. McKenney
2026-07-16  0:23 ` [PATCH 01/10] rcu-tasks: TASKS_TRACE_RCU doesn't need IRQ_WORK Paul E. McKenney
2026-07-16  0:23 ` [PATCH 02/10] rcu: Use task_state_to_char() in stall-warning prints Paul E. McKenney
2026-07-16  0:23 ` [PATCH 03/10] rcu: Mark __rcu_access_pointer() as context_unsafe() Paul E. McKenney
2026-07-16  0:23 ` [PATCH 04/10] doc: RCU: Adopt new coding style of type-aware kmalloc-family - part 2/2 Paul E. McKenney
2026-07-16  0:23 ` [PATCH 05/10] rcu-tasks: Remove unused struct rcu_tasks's->n_ipis_fails variables Paul E. McKenney
2026-07-16  0:23 ` [PATCH 06/10] rcu-tasks: Dump rcu tasks status when the boot-test failed Paul E. McKenney
2026-07-16  0:23 ` [PATCH 07/10] doc: RCU: Fix brackets Paul E. McKenney
2026-07-16  0:23 ` [PATCH 08/10] rcu-tasks: Apply READ_ONCE() and WRITE_ONCE() to fix data race Paul E. McKenney
2026-07-16  0:23 ` [PATCH 09/10] rcu-tasks: Remove smp_mb() in rcu_spawn_tasks_kthread_generic() Paul E. McKenney
2026-07-16  0:23 ` [PATCH 10/10] rcu-tasks: Update comments in call_rcu_tasks_generic() Paul E. McKenney
2026-07-31  1:01 ` [PATCH v2 0/16] Miscellaneous RCU updates for v7.3 Paul E. McKenney
2026-07-31  1:01   ` [PATCH RFC 01/16] rcu: Use task_state_to_char() in stall-warning prints Paul E. McKenney
2026-07-31  1:01   ` [PATCH RFC 02/16] rcu: Mark __rcu_access_pointer() as context_unsafe() Paul E. McKenney
2026-07-31  1:01   ` [PATCH RFC 03/16] doc: RCU: Adopt new coding style of type-aware kmalloc-family - part 2/2 Paul E. McKenney
2026-07-31  1:01   ` [PATCH RFC 04/16] doc: RCU: Fix brackets Paul E. McKenney
2026-07-31  1:01   ` Paul E. McKenney [this message]
2026-07-31  1:01   ` [PATCH RFC 06/16] rcu: clear defer_qs_pending in deferred-QS bail when nesting > 0 Paul E. McKenney
2026-07-31  1:01   ` [PATCH RFC 07/16] rcu: Use this_cpu_{read,write}() for ->cpu_no_qs.b.exp Paul E. McKenney
2026-07-31  1:01   ` [PATCH RFC 08/16] rcu: Use WRITE_ONCE() for ->rcu_need_heavy_qs Paul E. McKenney
2026-07-31  1:01   ` [PATCH RFC 09/16] rcu: Remove unused expedited_need_qs field from rcu_state Paul E. McKenney
2026-07-31  1:01   ` [PATCH RFC 10/16] rcu: Remove unused func parameter from callback-enqueue functions Paul E. McKenney
2026-07-31  1:01   ` [PATCH RFC 11/16] rcu: Mark accesses to rdp->rcu_cpu_has_work Paul E. McKenney
2026-07-31  1:01   ` [PATCH RFC 12/16] rcu: Mark interrupts-enabled accesses to rdp->cpu_no_qs.b.norm Paul E. McKenney
2026-07-31  1:01   ` [PATCH RFC 13/16] rcu: Remove unused rdp parameter from rcu_check_gp_start_stall() Paul E. McKenney
2026-07-31  1:01   ` [PATCH RFC 14/16] rcu: Mark accesses to ->rcu_urgent_qs and ->rcu_need_heavy_qs Paul E. McKenney
2026-07-31  1:01   ` [PATCH RFC 15/16] rcu: Reduce stack usage in show_rcu_gp_kthreads() Paul E. McKenney
2026-07-31  1:01   ` [PATCH RFC 16/16] rcu: Mark interrupts-enabled accesses to rdp->cpu_no_qs.s 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=20260731010153.3531313-5-paulmck@kernel.org \
    --to=paulmck@kernel.org \
    --cc=joelagnelf@nvidia.com \
    --cc=kernel-team@meta.com \
    --cc=linux-kernel@vger.kernel.org \
    --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.