All of lore.kernel.org
 help / color / mirror / Atom feed
From: Frederic Weisbecker <fweisbec@gmail.com>
To: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Cc: Josh Triplett <josh@joshtriplett.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 4/4 RFC] rcu: New rcu_user_enter_irq() and rcu_user_exit_irq() APIs
Date: Tue, 29 Nov 2011 15:05:23 +0100	[thread overview]
Message-ID: <20111129140520.GB20387@somewhere> (raw)
In-Reply-To: <20111129010036.GS2346@linux.vnet.ibm.com>

On Mon, Nov 28, 2011 at 05:00:36PM -0800, Paul E. McKenney wrote:
> On Mon, Nov 28, 2011 at 01:53:23PM -0800, Josh Triplett wrote:
> > On Mon, Nov 28, 2011 at 10:24:47PM +0100, Frederic Weisbecker wrote:
> > > A CPU running in adaptive tickless mode wants to enter into
> > > RCU extended quiescent state while running in userspace. This
> > > way we can shut down the tick that is usually needed on each
> > > CPU for the needs of RCU.
> > 
> > Very awesome.  I've wanted to see this change for a long time.  Thanks!
> 
> I am a fan, also.  ;-)
> 
> [ . . . ]
> 
> > > @@ -503,6 +515,18 @@ void rcu_user_exit(void)
> > >  	__rcu_idle_exit();
> > >  }
> > >  
> > > +void rcu_user_exit_irq(void)
> > > +{
> > > +	unsigned long flags;
> > > +	struct rcu_dynticks *rdtp;
> > > +
> > > +	local_irq_save(flags);
> > > +	rdtp = &__get_cpu_var(rcu_dynticks);
> > > +	WARN_ON_ONCE(rdtp->dynticks_nesting != 1);
> > > +	rdtp->dynticks_nesting = (LLONG_MAX / 2) + 1;
> > > +	local_irq_restore(flags);
> > > +}
> > > +
> > 
> > Any chance that either of these two needs a memory barrier of some kind,
> > to prevent leakage of operations from between them?  Or can you count on
> > no RCU-protected operations occurring during (or leaking into) the
> > extended quiescent state?
> 
> There is no need for a memory barrier on rdtp->dynticks_nesting because
> it is used (aside from state dumping) only by the local CPU.  In contrast,
> changes to ->dynticks are visible to other CPUs, hence the memory barriers
> around changes to ->dynticks.
> 
> Information flows within the CPU from ->dynticks_nesting to ->dynticks,
> which is externally visible.
> 
> Frederic, given my hamhandedness on the first patch and given that you
> mentioned its being less time critical, I will let you forward port
> patches #3 and #4.  I have pushed the first two patches to -rcu, branch
> rcu/dyntick.  I will be testing over the evening.

Sure. Also #3 and #4 are not used upstream, so I should probably rather
carry these in my tree once I do a rebase against yours.

  parent reply	other threads:[~2011-11-29 14:05 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-28 21:24 [PATCH 0/4] rcu: Make new RCU dynticks API work with nohz cpusets Frederic Weisbecker
2011-11-28 21:24 ` [PATCH 1/4] rcu: Don't check irq nesting from rcu idle entry/exit Frederic Weisbecker
2011-11-29  0:22   ` Paul E. McKenney
2011-11-29  0:26     ` Frederic Weisbecker
2011-11-29  0:39       ` Paul E. McKenney
2011-11-29  0:58         ` Frederic Weisbecker
2011-11-28 21:24 ` [PATCH 2/4] rcu: Irq nesting is always 0 on rcu_enter_idle_common Frederic Weisbecker
2011-11-29  0:29   ` Paul E. McKenney
2011-11-29  1:00     ` Frederic Weisbecker
2011-11-28 21:24 ` [PATCH 3/4 RFC] rcu: New rcu_user_enter() and rcu_user_exit() APIs Frederic Weisbecker
2011-11-28 21:24 ` [PATCH 4/4 RFC] rcu: New rcu_user_enter_irq() and rcu_user_exit_irq() APIs Frederic Weisbecker
2011-11-28 21:53   ` Josh Triplett
2011-11-29  1:00     ` Paul E. McKenney
2011-11-29  5:21       ` Josh Triplett
2011-11-29 14:05       ` Frederic Weisbecker [this message]
2011-11-29 18:23         ` Paul E. McKenney
2011-11-29 13:53     ` Frederic Weisbecker
2011-11-29  5:22 ` [PATCH 0/4] rcu: Make new RCU dynticks API work with nohz cpusets Josh Triplett
2011-11-29  5:43   ` Paul E. McKenney
2011-11-29  8:48     ` Josh Triplett
2011-11-29 17:44       ` Paul E. McKenney
2011-11-29 18:07         ` 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=20111129140520.GB20387@somewhere \
    --to=fweisbec@gmail.com \
    --cc=josh@joshtriplett.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=paulmck@linux.vnet.ibm.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.