All of lore.kernel.org
 help / color / mirror / Atom feed
From: Uladzislau Rezki <urezki@gmail.com>
To: "Paul E. McKenney" <paulmck@kernel.org>
Cc: "Uladzislau Rezki (Sony)" <urezki@gmail.com>,
	Boqun Feng <boqun.feng@gmail.com>, RCU <rcu@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Frederic Weisbecker <frederic@kernel.org>,
	Cheung Wall <zzqq0103.hey@gmail.com>,
	Neeraj upadhyay <Neeraj.Upadhyay@amd.com>,
	Joel Fernandes <joel@joelfernandes.org>,
	Oleksiy Avramchenko <oleksiy.avramchenko@sony.com>
Subject: Re: [PATCH 4/4] rcu: Use _full() API to debug synchronize_rcu()
Date: Fri, 24 Jan 2025 12:48:12 +0100	[thread overview]
Message-ID: <Z5N9_EafVhSfE6nA@pc636> (raw)
In-Reply-To: <ea7d8677-f81e-4590-9716-23ea41597873@paulmck-laptop>

On Thu, Jan 23, 2025 at 01:52:57PM -0800, Paul E. McKenney wrote:
> On Thu, Jan 23, 2025 at 07:58:28PM +0100, Uladzislau Rezki (Sony) wrote:
> > Switch for using of get_state_synchronize_rcu_full() and
> > poll_state_synchronize_rcu_full() pair for debug a normal
> > synchronize_rcu() call.
> > 
> > Just using "not" full APIs to identify if a grace period
> > is passed or not might lead to a false kernel splat.
> > 
> > Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
> > ---
> >  include/linux/rcupdate_wait.h | 4 ++++
> >  kernel/rcu/tree.c             | 8 +++-----
> >  2 files changed, 7 insertions(+), 5 deletions(-)
> > 
> > diff --git a/include/linux/rcupdate_wait.h b/include/linux/rcupdate_wait.h
> > index f9bed3d3f78d..a16fc2a9a7d7 100644
> > --- a/include/linux/rcupdate_wait.h
> > +++ b/include/linux/rcupdate_wait.h
> > @@ -16,6 +16,10 @@
> >  struct rcu_synchronize {
> >  	struct rcu_head head;
> >  	struct completion completion;
> > +#ifdef CONFIG_PROVE_RCU
> > +	/* This is for testing. */
> > +	struct rcu_gp_oldstate oldstate;
> > +#endif
> >  };
> >  void wakeme_after_rcu(struct rcu_head *head);
> >  
> > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
> > index 2795d6b5109c..0ae90089ef09 100644
> > --- a/kernel/rcu/tree.c
> > +++ b/kernel/rcu/tree.c
> > @@ -1612,12 +1612,10 @@ static void rcu_sr_normal_complete(struct llist_node *node)
> >  {
> >  	struct rcu_synchronize *rs = container_of(
> >  		(struct rcu_head *) node, struct rcu_synchronize, head);
> > -	unsigned long oldstate = (unsigned long) rs->head.func;
> >  
> >  	WARN_ONCE(IS_ENABLED(CONFIG_PROVE_RCU) &&
> > -		!poll_state_synchronize_rcu(oldstate),
> > -		"A full grace period is not passed yet: %lu",
> > -		rcu_seq_diff(get_state_synchronize_rcu(), oldstate));
> > +		!poll_state_synchronize_rcu_full(&rs->oldstate),
> > +		"A full grace period is not passed yet!\n");
> 
> Looks good, but why not also continue printing out the required
> grace-period sequence number?  Yes, there would need to be helper
> sprintf()-style functions to paper over the difference between Tiny RCU
> and Tree RCU.  ;-)
> 
Uhh :) Do we have rcu_seq_diff() for a _full() API? Looks like not :)

It contains both, rgos_norm and rgos_exp! Take a delta of both?

--
Uladzislau Rezki

  reply	other threads:[~2025-01-24 11:48 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-23 18:58 [PATCH 1/4] rcutorture: Allow a negative value for nfakewriters Uladzislau Rezki (Sony)
2025-01-23 18:58 ` [PATCH 2/4] torture: Remove CONFIG_NR_CPUS configuration Uladzislau Rezki (Sony)
2025-01-23 20:29   ` Paul E. McKenney
2025-01-24 11:41     ` Uladzislau Rezki
2025-01-24 15:45       ` Paul E. McKenney
2025-01-24 17:21         ` Uladzislau Rezki
2025-01-24 17:36           ` Paul E. McKenney
2025-01-24 17:48             ` Uladzislau Rezki
2025-01-24 19:34               ` Paul E. McKenney
2025-01-27 13:27                 ` Uladzislau Rezki
2025-01-27 14:51                   ` Paul E. McKenney
2025-01-27 15:42                     ` Uladzislau Rezki
2025-01-27 16:51                       ` Paul E. McKenney
2025-01-27 17:26                         ` Uladzislau Rezki
2025-01-27 18:15                           ` Paul E. McKenney
2025-01-27 18:31                             ` Uladzislau Rezki
2025-01-27 19:24                             ` Uladzislau Rezki
2025-01-27 20:37                               ` Uladzislau Rezki
2025-01-28  0:14                                 ` Paul E. McKenney
2025-01-28 12:17                                   ` Uladzislau Rezki
2025-01-28 12:41                                     ` Paul E. McKenney
2025-01-28 14:34                                       ` Uladzislau Rezki
2025-01-28 18:43                                         ` Paul E. McKenney
2025-01-28 20:57                                           ` Uladzislau Rezki
2025-01-23 18:58 ` [PATCH 3/4] rcu: Update TREE05.boot to test normal synchronize_rcu() Uladzislau Rezki (Sony)
2025-01-23 20:30   ` Paul E. McKenney
2025-01-23 18:58 ` [PATCH 4/4] rcu: Use _full() API to debug synchronize_rcu() Uladzislau Rezki (Sony)
2025-01-23 21:52   ` Paul E. McKenney
2025-01-24 11:48     ` Uladzislau Rezki [this message]
2025-01-24 15:49       ` Paul E. McKenney
2025-01-28 20:55 ` [PATCH 1/4] rcutorture: Allow a negative value for nfakewriters Uladzislau Rezki
2025-01-28 21:19   ` 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=Z5N9_EafVhSfE6nA@pc636 \
    --to=urezki@gmail.com \
    --cc=Neeraj.Upadhyay@amd.com \
    --cc=boqun.feng@gmail.com \
    --cc=frederic@kernel.org \
    --cc=joel@joelfernandes.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=oleksiy.avramchenko@sony.com \
    --cc=paulmck@kernel.org \
    --cc=rcu@vger.kernel.org \
    --cc=zzqq0103.hey@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.