From: Frederic Weisbecker <frederic@kernel.org>
To: Joel Fernandes <joelagnelf@nvidia.com>
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>
Subject: Re: [PATCH 2/2] rcu: Robustify rcu_is_cpu_rrupt_from_idle()
Date: Sun, 23 Mar 2025 23:31:41 +0100 [thread overview]
Message-ID: <Z-CLzTk0BPQ82bfY@pavilion.home> (raw)
In-Reply-To: <2a67f99e-7afd-499f-855c-69ecffd7c390@nvidia.com>
Le Sat, Mar 22, 2025 at 06:00:13PM +0100, Joel Fernandes a écrit :
>
>
> On 3/18/2025 2:56 PM, Frederic Weisbecker wrote:
> > RCU relies on the context tracking nesting counter in order to determine
> > if it is running in extended quiescent state.
> >
> > However the context tracking nesting counter is not completely
> > synchronized with the actual context tracking state:
> >
> > * The nesting counter is set to 1 or incremented further _after_ the
> > actual state is set to RCU not watching.
>
> I agree with patch, but this line is a bit confusing ->nesting is set to 1
> *after* the RCU state is set to "watching". Did you mean "watching" ?
>
> But I think you meant "After RCU transitions from a state of not-watching to
> watching' instead of 'actual state is set to RCU not watching'..
>
> ct_kernel_entry():
>
> // RCU is not watching here ...
> ct_kernel_enter_state(offset);
> // ... but is watching here.
> WRITE_ONCE(ct->nesting, 1);
Oh I completely inverted the thing in the changelog!
>
> > (then we know for sure we interrupted RCU not watching)
> >
> > * The nesting counter is set to 0 or decremented further _before_ the
> > actual state is set to RCU watching.
> >
> > Therefore it is safe to assume that if ct_nesting() > 0, RCU is not
> > watching. But if ct_nesting() <= 0, RCU is watching except for a tiny
> > window.
> >
> > This hasn't been a problem so far because rcu_is_cpu_rrupt_from_idle()
> > has only been called from interrupts. However the code is confusing
>
> Agreed, and I could also see the existing code's snippet:
> WARN_ON_ONCE(!nesting && !is_idle_task(current));
>
> .. not working if this function were to be called from non-interrupt kernel
> context.
Right.
I'll reissue that one.
Thanks!
prev parent reply other threads:[~2025-03-23 22:31 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-18 13:56 [PATCH 0/2] rcu: Random updates Frederic Weisbecker
2025-03-18 13:56 ` [PATCH 1/2] rcu: Comment on the extraneous delta test on rcu_seq_done_exact() Frederic Weisbecker
2025-03-18 18:37 ` Paul E. McKenney
2025-03-19 19:38 ` Joel Fernandes
2025-03-20 14:15 ` Frederic Weisbecker
2025-03-22 2:06 ` Joel Fernandes
2025-03-22 10:25 ` Frederic Weisbecker
2025-03-22 14:20 ` Joel Fernandes
2025-03-22 14:40 ` Joel Fernandes
2025-03-23 22:05 ` Frederic Weisbecker
2025-03-23 22:57 ` Joel Fernandes
2025-03-18 13:56 ` [PATCH 2/2] rcu: Robustify rcu_is_cpu_rrupt_from_idle() Frederic Weisbecker
2025-03-22 17:00 ` Joel Fernandes
2025-03-23 22:31 ` Frederic Weisbecker [this message]
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=Z-CLzTk0BPQ82bfY@pavilion.home \
--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 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.