From: Frederic Weisbecker <frederic@kernel.org>
To: Joel Fernandes <joelagnelf@nvidia.com>
Cc: "Paul E . McKenney" <paulmck@kernel.org>,
Neeraj Upadhyay <neeraj.upadhyay@kernel.org>,
Josh Triplett <josh@joshtriplett.org>,
Boqun Feng <boqun@kernel.org>,
Uladzislau Rezki <urezki@gmail.com>,
Steven Rostedt <rostedt@goodmis.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Lai Jiangshan <jiangshanlai@gmail.com>,
Zqiang <qiang.zhang@linux.dev>,
rcu@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH RFC v1 1/4] rcu/nocb: Consolidate rcu_nocb_cpu_offload/deoffload functions
Date: Wed, 4 Mar 2026 16:32:22 +0100 [thread overview]
Message-ID: <aahQhlPp3Qqm4Bwg@localhost.localdomain> (raw)
In-Reply-To: <20260224230435.3390963-2-joelagnelf@nvidia.com>
Le Tue, Feb 24, 2026 at 06:04:32PM -0500, Joel Fernandes a écrit :
> The rcu_nocb_cpu_offload() and rcu_nocb_cpu_deoffload() functions are
> nearly duplicates.
>
> Therefore, extract the common logic into rcu_nocb_cpu_toggle_offload()
> which takes an 'offload' boolean, and make both exported functions
> simple wrappers.
>
> This eliminates a bunch of duplicate code at the call sites, namely
> mutex locking, CPU hotplug locking and CPU online checks.
>
> Signed-off-by: Joel Fernandes <joelagnelf@nvidia.com>
> ---
> kernel/rcu/tree_nocb.h | 89 ++++++++++++++++++++++--------------------
> 1 file changed, 46 insertions(+), 43 deletions(-)
>
> diff --git a/kernel/rcu/tree_nocb.h b/kernel/rcu/tree_nocb.h
> index b3337c7231cc..5b041134d6bb 100644
> --- a/kernel/rcu/tree_nocb.h
> +++ b/kernel/rcu/tree_nocb.h
> @@ -1081,30 +1081,6 @@ static int rcu_nocb_rdp_deoffload(struct rcu_data *rdp)
> return 0;
> }
>
> -int rcu_nocb_cpu_deoffload(int cpu)
> -{
> - struct rcu_data *rdp = per_cpu_ptr(&rcu_data, cpu);
> - int ret = 0;
> -
> - cpus_read_lock();
> - mutex_lock(&rcu_state.nocb_mutex);
> - if (rcu_rdp_is_offloaded(rdp)) {
> - if (!cpu_online(cpu)) {
> - ret = rcu_nocb_rdp_deoffload(rdp);
> - if (!ret)
> - cpumask_clear_cpu(cpu, rcu_nocb_mask);
> - } else {
> - pr_info("NOCB: Cannot CB-deoffload online CPU %d\n", rdp->cpu);
> - ret = -EINVAL;
> - }
> - }
> - mutex_unlock(&rcu_state.nocb_mutex);
> - cpus_read_unlock();
> -
> - return ret;
> -}
> -EXPORT_SYMBOL_GPL(rcu_nocb_cpu_deoffload);
> -
> static bool rcu_nocb_rdp_offload_wait_cond(struct rcu_data *rdp)
> {
> unsigned long flags;
> @@ -1149,27 +1125,54 @@ static int rcu_nocb_rdp_offload(struct rcu_data *rdp)
> return 0;
> }
>
> +/* Common helper for CPU offload/deoffload operations. */
> +static int rcu_nocb_cpu_toggle_offload(int cpu, bool offload)
> +{
> + struct rcu_data *rdp = per_cpu_ptr(&rcu_data, cpu);
> + bool currently_offloaded;
> + int ret = 0;
> +
> + cpus_read_lock();
> + mutex_lock(&rcu_state.nocb_mutex);
> +
> + currently_offloaded = rcu_rdp_is_offloaded(rdp);
Do we really need that extra variable?
Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
--
Frederic Weisbecker
SUSE Labs
next prev parent reply other threads:[~2026-03-04 15:32 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-24 23:04 [PATCH RFC v1 0/4] rcu/nocb: Clean ups and rcutorture test configs Joel Fernandes
2026-02-24 23:04 ` [PATCH RFC v1 1/4] rcu/nocb: Consolidate rcu_nocb_cpu_offload/deoffload functions Joel Fernandes
2026-03-04 15:32 ` Frederic Weisbecker [this message]
2026-03-04 17:05 ` Joel Fernandes
2026-02-24 23:04 ` [PATCH RFC v1 2/4] rcu/nocb: Extract nocb_bypass_needs_flush() to reduce duplication Joel Fernandes
2026-03-11 12:58 ` Frederic Weisbecker
2026-02-24 23:04 ` [PATCH RFC v1 3/4] rcutorture: Add NOCB01 config for RCU_LAZY torture testing Joel Fernandes
2026-03-11 13:02 ` Frederic Weisbecker
2026-02-24 23:04 ` [PATCH RFC v1 4/4] rcutorture: Add NOCB02 config for nocb poll mode testing Joel Fernandes
2026-02-25 21:47 ` Paul E. McKenney
2026-02-26 0:14 ` Joel Fernandes
2026-03-11 13:03 ` Frederic Weisbecker
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=aahQhlPp3Qqm4Bwg@localhost.localdomain \
--to=frederic@kernel.org \
--cc=boqun@kernel.org \
--cc=jiangshanlai@gmail.com \
--cc=joelagnelf@nvidia.com \
--cc=josh@joshtriplett.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=neeraj.upadhyay@kernel.org \
--cc=paulmck@kernel.org \
--cc=qiang.zhang@linux.dev \
--cc=rcu@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=urezki@gmail.com \
/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.