From: Frederic Weisbecker <frederic@kernel.org>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Frederic Weisbecker <frederic@kernel.org>,
Boqun Feng <boqun.feng@gmail.com>,
Joel Fernandes <joelagnelf@nvidia.com>,
Neeraj Upadhyay <neeraj.upadhyay@amd.com>,
"Paul E . McKenney" <paulmck@kernel.org>,
Uladzislau Rezki <urezki@gmail.com>,
Zqiang <qiang.zhang1211@gmail.com>, rcu <rcu@vger.kernel.org>
Subject: [PATCH 5/5] rcu/exp: Warn on CPU lagging for too long within hotplug IPI's blindspot
Date: Tue, 29 Apr 2025 15:43:04 +0200 [thread overview]
Message-ID: <20250429134304.3824863-6-frederic@kernel.org> (raw)
In-Reply-To: <20250429134304.3824863-1-frederic@kernel.org>
A CPU within hotplug operations can make the RCU exp kworker lagging if:
* The dying CPU is running after CPUHP_TEARDOWN_CPU but before
rcutree_report_cpu_dead(). It is too late to send an IPI but RCU is
still watching the CPU. Therefore the exp kworker can only wait for
the target to reach rcutree_report_cpu_dead().
* The booting CPU is running after rcutree_report_cpu_starting() but
before set_cpu_online(). RCU is watching the CPU but it is too early
to be able to send an IPI. Therefore the exp kworker can only wait
until it observes the CPU as officially online.
Such a lag is expected to be very short. However #VMEXIT and other
hazards can stay on the way. Report long delays, 10 jiffies is
considered a high threshold already.
Reported-by: Paul E. McKenney <paulmck@kernel.org>
Reviewed-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
---
kernel/rcu/tree_exp.h | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/kernel/rcu/tree_exp.h b/kernel/rcu/tree_exp.h
index 6058a734090c..87a44423927d 100644
--- a/kernel/rcu/tree_exp.h
+++ b/kernel/rcu/tree_exp.h
@@ -406,8 +406,18 @@ static void __sync_rcu_exp_select_node_cpus(struct rcu_exp_work *rewp)
for_each_leaf_node_cpu_mask(rnp, cpu, mask_ofl_ipi) {
struct rcu_data *rdp = per_cpu_ptr(&rcu_data, cpu);
unsigned long mask = rdp->grpmask;
+ int nr_retries = 0;
retry_ipi:
+ /*
+ * In case of retrying, CPU either is lagging:
+ *
+ * - between CPUHP_TEARDOWN_CPU and rcutree_report_cpu_dead()
+ * or:
+ * - between rcutree_report_cpu_starting() and set_cpu_online()
+ */
+ WARN_ON_ONCE(nr_retries++ > 10);
+
if (rcu_watching_snap_stopped_since(rdp, rdp->exp_watching_snap)) {
mask_ofl_test |= mask;
continue;
--
2.48.1
next prev parent reply other threads:[~2025-04-29 13:43 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-29 13:42 [PATCH 0/5 v3] rcu/exp updates Frederic Weisbecker
2025-04-29 13:43 ` [PATCH 1/5] rcu/exp: Protect against early QS report Frederic Weisbecker
2025-04-29 13:43 ` [PATCH 2/5] rcu/exp: Remove confusing needless full barrier on task unblock Frederic Weisbecker
2025-04-29 13:43 ` [PATCH 3/5] rcu/exp: Remove needless CPU up quiescent state report Frederic Weisbecker
2025-04-29 13:43 ` [PATCH 4/5] rcu/exp: Warn on QS requested on dying CPU Frederic Weisbecker
2025-04-29 13:43 ` Frederic Weisbecker [this message]
2025-04-30 2:20 ` [PATCH 5/5] rcu/exp: Warn on CPU lagging for too long within hotplug IPI's blindspot Joel Fernandes
2025-05-01 21:49 ` Frederic Weisbecker
2025-05-02 15:08 ` Joel Fernandes
-- strict thread matches above, loose matches on Subject: below --
2025-03-14 14:36 [PATCH 0/5 v2] rcu/exp updates Frederic Weisbecker
2025-03-14 14:36 ` [PATCH 5/5] rcu/exp: Warn on CPU lagging for too long within hotplug IPI's blindspot Frederic Weisbecker
2025-03-18 17:22 ` Paul E. McKenney
2025-03-19 9:42 ` Frederic Weisbecker
2025-03-19 14:04 ` 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=20250429134304.3824863-6-frederic@kernel.org \
--to=frederic@kernel.org \
--cc=boqun.feng@gmail.com \
--cc=joelagnelf@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=neeraj.upadhyay@amd.com \
--cc=paulmck@kernel.org \
--cc=qiang.zhang1211@gmail.com \
--cc=rcu@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox