Re: [PATCH v3 3/5] MCS Lock: Barrier corrections

From: Tim Chen
Date: Thu Nov 07 2013 - 20:16:52 EST


On Thu, 2013-11-07 at 14:43 -0800, Michel Lespinasse wrote:
> On Thu, Nov 7, 2013 at 2:21 PM, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> > On Thu, Nov 07, 2013 at 01:15:51PM -0800, Tim Chen wrote:
> >> Michel, are you planning to do an implementation of
> >> load-acquire/store-release functions of various architectures?
> >
> > A little something like this:
> > http://marc.info/?l=linux-arch&m=138386254111507
> >
> > It so happens we were working on that the past week or so due to another
> > issue ;-)
>
> Haha, awesome, I wasn't aware of this effort.
>
> Tim: my approach would be to provide the acquire/release operations in
> arch-specific include files, and have a default implementation using
> barriers for arches who don't provide these new ops. That way you make
> it work on all arches at once (using the default implementation) and
> make it fast on any arch that cares.
>
> >> Or is the approach of arch specific memory barrier for MCS
> >> an acceptable one before load-acquire and store-release
> >> are available? Are there any technical issues remaining with
> >> the patchset after including including Waiman's arch specific barrier?
>
> I don't want to stand in the way of Waiman's change, and I had
> actually taken the same approach with arch-specific barriers when
> proposing some queue spinlocks in the past; however I do feel that
> this comes back regularly enough that having acquire/release
> primitives available would help, hence my proposal.
>
> That said, earlier in the thread Linus said we should probably get all
> our ducks in a row before going forward with this, so...
>

With the load_acquire and store_release implemented, it should be
pretty straightforward to implement MCS with them. I'll respin
the patch series with these primitives.

Thanks.

Tim

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/