mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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
> 

  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®