[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20251227001239.405644-1-joelagnelf@nvidia.com>
Date: Fri, 26 Dec 2025 19:12:36 -0500
From: Joel Fernandes <joelagnelf@...dia.com>
To: "Paul E . McKenney" <paulmck@...nel.org>,
Frederic Weisbecker <frederic@...nel.org>,
Neeraj Upadhyay <neeraj.upadhyay@...nel.org>,
Josh Triplett <josh@...htriplett.org>,
Boqun Feng <boqun.feng@...il.com>,
Uladzislau Rezki <urezki@...il.com>,
Steven Rostedt <rostedt@...dmis.org>,
Mathieu Desnoyers <mathieu.desnoyers@...icios.com>,
Lai Jiangshan <jiangshanlai@...il.com>,
Zqiang <qiang.zhang@...ux.dev>
Cc: rcu@...r.kernel.org,
linux-kernel@...r.kernel.org,
Joel Fernandes <joelagnelf@...dia.com>
Subject: [PATCH v2 0/3] rcu/nocb: Few NOCB cleanup patches
This series removes an unnecessary wake path (WakeOvfIsDeferred) from
the NOCB code and adds debugging warnings to detect any potential lost
wakeups.
The WakeOvfIsDeferred code path in __call_rcu_nocb_wake() attempts to
wake rcuog when the callback count exceeds qhimark and callbacks aren't
done with their GP. However, testing proves this wake is always
redundant or useless - in the flooding case, rcuog is always waiting
for a GP to finish, so waking it up is pointless.
All NOCB rcutorture scenarios pass (TREE01, TREE05, TREE08).
Changes since v1:
- Split into separate patches as suggested by Frederic
- Removed the pairing smp_mb__after_spin_lock() in
do_nocb_deferred_wakeup_timer() as noted by Frederic.
Link to v1 (RFC):
https://lore.kernel.org/all/20251225074451.2405584-1-joelagnelf@nvidia.com/
Joel Fernandes (3):
rcu/nocb: Remove unnecessary WakeOvfIsDeferred wake path
rcu/nocb: Add warning if no rcuog wake up attempt happened during
overload
rcu/nocb: Add warning to detect if overload advancement is ever useful
kernel/rcu/tree.c | 2 ++
kernel/rcu/tree.h | 2 +-
kernel/rcu/tree_nocb.h | 53 +++++++++++++++++++++---------------------
3 files changed, 29 insertions(+), 28 deletions(-)
--
2.34.1
Powered by blists - more mailing lists