Re: [PATCH RFC tip/core/rcu 05/14] rcu: Abstract sequence counting from synchronize_sched_expedited()

Paul E. McKenney
2015-07-09T14:21:31Z

On Thu, Jul 09, 2015 at 11:42:49AM +0300, Dan Carpenter wrote:
> On Wed, Jul 01, 2015 at 03:18:04PM -0700, Paul E. McKenney wrote:
> > > > +/* Adjust sequence number for start of update-side operation. */
> > > > +static void rcu_seq_start(unsigned long *sp)
> > > > +{
> > > > + WRITE_ONCE(*sp, *sp + 1);
> > > > + smp_mb(); /* Ensure update-side operation after counter increment. */
> > > > + WARN_ON_ONCE(!(*sp & 0x1));
> > > > +}
> > >
> > > That wants to be an ACQUIRE, right?
> >
> > I cannot put the acquire in the WARN_ON_ONCE() because there
> > are configurations where WARN_ON_ONCE() is compiled out.
>
> I think WARN_ON_ONCE() always evaulates the condition. You are maybe
> thinking of VM_WARN_ON_ONCE().

Even if it happens to now, it is only a matter of time until the
tinification people make it optional.

> I'm on a different thread where we almost introduced a bug by using
> VM_WARN_ONCE() instead of WARN_ONCE(). The VM_WARNING conditions had
> long execute times so they are weird.

New one on me! At first glance, they look like they map pretty
directly, though.

Thanx, Paul