From: Joel Fernandes <joelagnelf@nvidia.com>
To: Frederic Weisbecker <frederic@kernel.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Boqun Feng <boqun.feng@gmail.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>,
Frederic Weisbecker <frederic@kernel.org>
Subject: Re: [PATCH 5/5] rcu/exp: Warn on CPU lagging for too long within hotplug IPI's blindspot
Date: Wed, 30 Apr 2025 02:20:31 +0000 [thread overview]
Message-ID: <8609B469-5CB0-4EBC-94D3-FE3F90697ABC@nvidia.com> (raw)
In-Reply-To: <20250429134304.3824863-6-frederic@kernel.org>
> On Apr 29, 2025, at 9:44 AM, Frederic Weisbecker <frederic@kernel.org> wrote:
Hi Frederic,
These all look good to me. Do you wish for
these to go into the upcoming merge window or
can I push them to a for-Neeraj branch as he
is doing the merge window after the next?
Thanks,
- Joel
>
> 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-30 2:20 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 ` [PATCH 5/5] rcu/exp: Warn on CPU lagging for too long within hotplug IPI's blindspot Frederic Weisbecker
2025-04-30 2:20 ` Joel Fernandes [this message]
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=8609B469-5CB0-4EBC-94D3-FE3F90697ABC@nvidia.com \
--to=joelagnelf@nvidia.com \
--cc=boqun.feng@gmail.com \
--cc=frederic@kernel.org \
--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
all inboxes | Powered by JetHome®