From: Frederic Weisbecker <frederic@kernel.org>
To: Valentin Schneider <vschneid@redhat.com>
Cc: "Paul E. McKenney" <paulmck@kernel.org>,
rcu@vger.kernel.org, linux-kernel@vger.kernel.org,
Peter Zijlstra <peterz@infradead.org>,
Neeraj Upadhyay <quic_neeraju@quicinc.com>,
Joel Fernandes <joel@joelfernandes.org>,
Josh Triplett <josh@joshtriplett.org>,
Boqun Feng <boqun.feng@gmail.com>,
Steven Rostedt <rostedt@goodmis.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Lai Jiangshan <jiangshanlai@gmail.com>,
Zqiang <qiang.zhang1211@gmail.com>
Subject: Re: [PATCH v2 18/27] rcu: Rename rcu_dynticks_in_eqs_since() into rcu_watching_changed_since()
Date: Tue, 14 May 2024 12:42:08 +0200 [thread overview]
Message-ID: <ZkNAABSASimEq8ho@localhost.localdomain> (raw)
In-Reply-To: <xhsmhttj1h7xy.mognet@vschneid-thinkpadt14sgen2i.remote.csb>
Le Mon, May 13, 2024 at 08:40:09PM +0200, Valentin Schneider a écrit :
> On 08/05/24 12:59, Frederic Weisbecker wrote:
> > Le Tue, May 07, 2024 at 10:14:08AM -0700, Paul E. McKenney a écrit :
> >> On Tue, May 07, 2024 at 03:48:18PM +0200, Frederic Weisbecker wrote:
> >> > Indeed in practice the function only checks a change. But semantically it really
> >> > checks a trip to eqs because this function is only ever called after a failing
> >> > call to rcu_dynticks_in_eqs().
> >> >
> >> > So not sure about that one rename. Paul?
> >>
> >> As you say, Valentin is technically correct. Me, I am having a hard
> >> time getting too excited one way or the other. ;-)
> >>
> >> I suggest thinking in terms of rate-bounding the change. If you do
> >> change it, don't change it again for a few years.
> >
> > Makes sense!
> >
> >>
> >> Either way, should comments be changed or added?
> >>
> >> Of course, the scientific way to evaluate this is to whose a couple
> >> dozen people the old code and a couple dozen other people the new code,
> >> and see if one group or the other has statistically significantly lower
> >> levels of confusion. I don't see how this is feasible, but it is the
> >> (painfully) correct way. On the other hand, it would have the beneficial
> >> side effect of getting more people exposed to Linux-kernel-RCU internals.
> >> Unfortunately, it might also have the additional side effect of making
> >> them (more) annoyed at RCU. ;-)
> >
> > Sounds good!
> >
> > I divided myself in two blank RCU subjects for a double blind study
> > and locked those people up overnight with a paper containing both proposals.
> >
> > I opened the door five minutes ago and they both elected by mutual agreement
> > rcu_watching_changed_since()! Also they are thirsty.
> >
> > Congratulations Valentin! :-)
>
> :-)
>
> Now, not that I like wasting everyone's time, but... I hadn't taken a step
> back to realize the calling context implied this would always be used to
> check an entry into EQS, per the waiting loop structures. With this in
> mind, how about the following?
>
>
> /**
> * rcu_watching_stopped_since() - Has RCU stopped watching a given CPU since
> * the specified @snap?
> *
> * @rdp: The rcu_data corresponding to the CPU for which to check EQS.
> * @snap: rcu_watching snapshot taken when the CPU wasn't in an EQS.
> *
> * Returns true if the CPU corresponding to @rcu_data has spent some time in an
@rdp
> * extended quiescent state since @snap. Note that this doesn't check if it
> * /still/ is in an EQS, just that it went through one since @snap.
> *
> * This is meant to be used in a loop waiting for a CPU to go through an EQS.
> */
> static bool rcu_watching_stopped_since(struct rcu_data *rdp, int snap)
> {
> if (WARN_ON_ONCE(rcu_watching_in_eqs(snap)))
> return true;
>
> return snap != rcu_dynticks_snap(rdp->cpu);
> }
>
>
Yep, looks good to me!
Thanks.
next prev parent reply other threads:[~2024-05-14 10:42 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-30 9:17 [PATCH v2 00/27] context_tracking, rcu: Spring cleaning renaming Valentin Schneider
2024-04-30 9:17 ` [PATCH v2 01/27] treewide: context_tracking: Rename CONTEXT_* into CT_STATE_* Valentin Schneider
2024-04-30 9:17 ` [PATCH v2 02/27] context_tracking, rcu: Rename RCU_DYNTICKS_IDX into CT_RCU_WATCHING Valentin Schneider
2024-05-06 10:39 ` Frederic Weisbecker
2024-04-30 9:17 ` [PATCH v2 03/27] context_tracking, rcu: Rename ct_dynticks() into ct_rcu_watching() Valentin Schneider
2024-05-06 10:41 ` Frederic Weisbecker
2024-04-30 9:17 ` [PATCH v2 04/27] context_tracking, rcu: Rename ct_dynticks_cpu() into ct_rcu_watching_cpu() Valentin Schneider
2024-05-06 10:43 ` Frederic Weisbecker
2024-04-30 9:17 ` [PATCH v2 05/27] context_tracking, rcu: Rename ct_dynticks_cpu_acquire() into ct_rcu_watching_cpu_acquire() Valentin Schneider
2024-05-06 10:45 ` Frederic Weisbecker
2024-04-30 9:17 ` [PATCH v2 06/27] context_tracking, rcu: Rename struct context_tracking .dynticks_nesting into .nesting Valentin Schneider
2024-05-06 10:48 ` Frederic Weisbecker
2024-04-30 9:17 ` [PATCH v2 07/27] context_tracking, rcu: Rename ct_dynticks_nesting() into ct_nesting() Valentin Schneider
2024-05-06 11:01 ` Frederic Weisbecker
2024-04-30 9:17 ` [PATCH v2 08/27] context_tracking, rcu: Rename ct_dynticks_nesting_cpu() into ct_nesting_cpu() Valentin Schneider
2024-05-06 20:09 ` Frederic Weisbecker
2024-04-30 9:17 ` [PATCH v2 09/27] context_tracking, rcu: Rename struct context_tracking .dynticks_nmi_nesting into .nmi_nesting Valentin Schneider
2024-05-06 20:19 ` Frederic Weisbecker
2024-04-30 9:17 ` [PATCH v2 10/27] context_tracking, rcu: Rename ct_dynticks_nmi_nesting() into ct_nmi_nesting() Valentin Schneider
2024-05-06 20:50 ` Frederic Weisbecker
2024-04-30 9:17 ` [PATCH v2 11/27] context_tracking, rcu: Rename ct_dynticks_nmi_nesting_cpu() into ct_nmi_nesting_cpu() Valentin Schneider
2024-05-06 21:03 ` Frederic Weisbecker
2024-04-30 9:17 ` [PATCH v2 12/27] context_tracking, rcu: Rename DYNTICK_IRQ_NONIDLE into CT_NESTING_IRQ_NONIDLE Valentin Schneider
2024-05-06 21:06 ` Frederic Weisbecker
2024-04-30 9:17 ` [PATCH v2 13/27] context_tracking, rcu: Rename rcu_dynticks_task*() into rcu_task*() Valentin Schneider
2024-05-06 21:15 ` Frederic Weisbecker
2024-05-08 14:39 ` Frederic Weisbecker
2024-05-13 18:39 ` Valentin Schneider
2024-04-30 9:17 ` [PATCH v2 14/27] context_tracking, rcu: Rename rcu_dynticks_curr_cpu_in_eqs() into rcu_watching_curr_cpu() Valentin Schneider
2024-05-06 22:00 ` Frederic Weisbecker
2024-04-30 9:17 ` [PATCH v2 15/27] rcu: Rename rcu_dynticks_eqs_online() into rcu_watching_eqs_online() Valentin Schneider
2024-05-06 22:18 ` Frederic Weisbecker
2024-05-07 8:59 ` Valentin Schneider
2024-04-30 9:17 ` [PATCH v2 16/27] rcu: Rename rcu_dynticks_snap() into rcu_watching_snap() Valentin Schneider
2024-05-07 13:11 ` Frederic Weisbecker
2024-04-30 9:17 ` [PATCH v2 17/27] rcu: Rename rcu_dynticks_in_eqs() into rcu_watching_in_eqs() Valentin Schneider
2024-05-07 13:32 ` Frederic Weisbecker
2024-05-07 15:48 ` Valentin Schneider
2024-05-08 10:46 ` Frederic Weisbecker
2024-04-30 9:17 ` [PATCH v2 18/27] rcu: Rename rcu_dynticks_in_eqs_since() into rcu_watching_changed_since() Valentin Schneider
2024-05-07 13:48 ` Frederic Weisbecker
2024-05-07 17:14 ` Paul E. McKenney
2024-05-08 10:59 ` Frederic Weisbecker
2024-05-13 18:40 ` Valentin Schneider
2024-05-14 10:42 ` Frederic Weisbecker [this message]
2024-04-30 9:17 ` [PATCH v2 19/27] rcu: Rename rcu_dynticks_zero_in_eqs() into rcu_watching_zero_in_eqs() Valentin Schneider
2024-05-08 12:43 ` Frederic Weisbecker
2024-04-30 9:17 ` [PATCH v2 20/27] rcu: Rename struct rcu_data .dynticks_snap into .watching_snap Valentin Schneider
2024-05-08 12:55 ` Frederic Weisbecker
2024-04-30 9:17 ` [PATCH v2 21/27] rcu: Rename struct rcu_data .exp_dynticks_snap into .exp_watching_snap Valentin Schneider
2024-05-08 13:06 ` Frederic Weisbecker
2024-04-30 9:17 ` [PATCH v2 22/27] rcu: Rename dyntick_save_progress_counter() into eqs_save_progress_counter() Valentin Schneider
2024-05-08 13:21 ` Frederic Weisbecker
2024-04-30 9:17 ` [PATCH v2 23/27] rcu: Rename rcu_implicit_dynticks_qs() into rcu_implicit_eqs() Valentin Schneider
2024-04-30 9:17 ` [PATCH v2 24/27] rcu: Rename rcu_momentary_dyntick_idle() into rcu_momentary_eqs() Valentin Schneider
2024-05-08 13:30 ` Frederic Weisbecker
2024-04-30 9:17 ` [PATCH v2 25/27] context_tracking, rcu: Rename stray ->dynticks comments Valentin Schneider
2024-05-08 13:39 ` Frederic Weisbecker
2024-04-30 9:17 ` [PATCH v2 26/27] rcu: Update stray documentation references to rcu_dynticks_eqs_{enter, exit}() Valentin Schneider
2024-05-08 14:55 ` Frederic Weisbecker
2024-05-13 18:40 ` Valentin Schneider
2024-04-30 9:17 ` [PATCH v2 27/27] context_tracking, rcu: Rename rcu_dyntick trace event into rcu_watching Valentin Schneider
2024-05-08 13:59 ` Frederic Weisbecker
2024-05-13 18:40 ` Valentin Schneider
2024-05-14 12:09 ` Frederic Weisbecker
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=ZkNAABSASimEq8ho@localhost.localdomain \
--to=frederic@kernel.org \
--cc=boqun.feng@gmail.com \
--cc=jiangshanlai@gmail.com \
--cc=joel@joelfernandes.org \
--cc=josh@joshtriplett.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=paulmck@kernel.org \
--cc=peterz@infradead.org \
--cc=qiang.zhang1211@gmail.com \
--cc=quic_neeraju@quicinc.com \
--cc=rcu@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=vschneid@redhat.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).