From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Ingo Molnar <mingo@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Tim Chen <tim.c.chen@linux.intel.com>,
Will Deacon <will.deacon@arm.com>, Ingo Molnar <mingo@elte.hu>,
Andrew Morton <akpm@linux-foundation.org>,
Thomas Gleixner <tglx@linutronix.de>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
linux-mm <linux-mm@kvack.org>,
"linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
Waiman Long <waiman.long@hp.com>,
Andrea Arcangeli <aarcange@redhat.com>,
Alex Shi <alex.shi@linaro.org>, Andi Kleen <andi@firstfloor.org>,
Michel Lespinasse <walken@google.com>,
Davidlohr Bueso <davidlohr.bueso@hp.com>,
Matthew R Wilcox <matthew.r.wilcox@intel.com>,
Dave Hansen <dave.hansen@intel.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Rik van Riel <riel@redhat.com>
Subject: Re: [PATCH v6 4/5] MCS Lock: Barrier corrections
Date: Fri, 22 Nov 2013 10:49:37 -0800 [thread overview]
Message-ID: <20131122184937.GX4138@linux.vnet.ibm.com> (raw)
In-Reply-To: <20131122151600.GA14988@gmail.com>
On Fri, Nov 22, 2013 at 04:16:00PM +0100, Ingo Molnar wrote:
>
> * Paul E. McKenney <paulmck@linux.vnet.ibm.com> wrote:
>
> > On Thu, Nov 21, 2013 at 08:25:59PM -0800, Linus Torvalds wrote:
> >
> > [...]
> >
> > > I do care deeply about reality, particularly of architectures that
> > > actually matter. To me, a spinlock in some theoretical case is
> > > uninteresting, but a efficient spinlock implementation on a real
> > > architecture is a big deal that matters a lot.
> >
> > Agreed, reality and efficiency are the prime concerns. Theory
> > serves reality and efficiency, but definitely not the other way
> > around.
> >
> > But if we want locking primitives that don't rely solely on atomic
> > instructions (such as the queued locks that people have been putting
> > forward), we are going to need to wade through a fair bit of theory
> > to make sure that they actually work on real hardware. Subtle bugs
> > in locking primitives is a type of reality that I think we can both
> > agree that we should avoid.
> >
> > Or am I missing your point?
>
> I think one point Linus wanted to make that it's not true that Linux
> has to offer a barrier and locking model that panders to the weakest
> (and craziest!) memory ordering model amongst all the possible Linux
> platforms - theoretical or real metal.
>
> Instead what we want to do is to consciously, intelligently _pick_ a
> sane, maintainable memory model and offer primitives for that - at
> least as far as generic code is concerned. Each architecture can map
> those primitives to the best of its abilities.
>
> Because as we increase abstraction, as we allow more and more complex
> memory ordering details, so does maintainability and robustness
> decrease. So there's a very real crossover point at which point
> increased smarts will actually hurt our code in real life.
>
> [ Same goes for compilers, we draw a line: for example we generally
> turn off strict aliasing optimizations, or we turn off NULL pointer
> check elimination optimizations. ]
>
> I'm not saying this to not discuss theoretical complexities - I'm just
> saying that the craziest memory ordering complexities are probably
> best dealt with by agreeing not to use them ;-)
Thank you for the explanation, Ingo! I do agree with these principles.
That said, I remain really confused. My best guess is that you are
advising me to ask Peter to stiffen up smp_store_release() so that
it preserves the guarantee that unlock+lock provides a full barrier,
thus allowing it to be used in the queued spinlocks as well as in its
original circular-buffer use case. But even that doesn't completely
fit because that was the direction I was going beforehand.
You see, my problem is not the "crazy ordering" DEC Alpha, Itanium,
PowerPC, or even ARM. It is really obvious what instructions to use in
a stiffened-up smp_store_release() for those guys: "mb" for DEC Alpha,
"st.rel" for Itanium, "sync" for PowerPC, and "dmb" for ARM. Believe it
or not, my problem is instead with good old tightly ordered x86.
We -could- just put an mfence into x86's smp_store_release() and
be done with it, but it currently looks like we get the effect of
a full memory barrier without it, at least in the special case of
the high-contention queued-lock handoff. To repeat, it looks like we
preserve the full-memory-barrier property of unlock+lock for x86 -even-
-though- the queued-lock high-contention handoff code contains neither
atomic instructions nor memory-barrier instructions. This is a bit
surprising to me, to say the least. Hence my digging into the theory
to check it -- after all, we cannot prove it correct by testing it.
Here are some other things that you and Linus might be trying to tell me:
o Just say "no" to queued locks. (I am OK with this. NAKs are
after all easier than beating my head against memory models.)
o Don't add store-after-conditional control dependencies to
Documentation/memory-barriers.txt because it is too complicated.
(I am OK with this, I suppose -- but some people really want to
rely on them.)
o Just add general control dependencies, because that is what
people expect. (I have more trouble with this because there
is a -lot- of work needed in many projects to make this happen,
including on ARM, but some work on x86 as well.)
Anything I am missing here?
Thanx, Paul
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Ingo Molnar <mingo@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Tim Chen <tim.c.chen@linux.intel.com>,
Will Deacon <will.deacon@arm.com>, Ingo Molnar <mingo@elte.hu>,
Andrew Morton <akpm@linux-foundation.org>,
Thomas Gleixner <tglx@linutronix.de>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
linux-mm <linux-mm@kvack.org>,
"linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
Waiman Long <waiman.long@hp.com>,
Andrea Arcangeli <aarcange@redhat.com>,
Alex Shi <alex.shi@linaro.org>, Andi Kleen <andi@firstfloor.org>,
Michel Lespinasse <walken@google.com>,
Davidlohr Bueso <davidlohr.bueso@hp.com>,
Matthew R Wilcox <matthew.r.wilcox@intel.com>,
Dave Hansen <dave.hansen@intel.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Rik van Riel <riel@redhat.com>,
Peter Hurley <peter@hurleysoftware.com>,
Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>,
George Spelvin <linux@horizon.com>,
"H. Peter Anvin" <hpa@zytor.com>, Arnd Bergmann <arnd@arndb.de>,
Aswin Chandramouleeswaran <aswin@hp.com>,
Scott J Norton <scott.norton@hp.com>,
"Figo.zhang" <figo1802@gmail.com>
Subject: Re: [PATCH v6 4/5] MCS Lock: Barrier corrections
Date: Fri, 22 Nov 2013 10:49:37 -0800 [thread overview]
Message-ID: <20131122184937.GX4138@linux.vnet.ibm.com> (raw)
In-Reply-To: <20131122151600.GA14988@gmail.com>
On Fri, Nov 22, 2013 at 04:16:00PM +0100, Ingo Molnar wrote:
>
> * Paul E. McKenney <paulmck@linux.vnet.ibm.com> wrote:
>
> > On Thu, Nov 21, 2013 at 08:25:59PM -0800, Linus Torvalds wrote:
> >
> > [...]
> >
> > > I do care deeply about reality, particularly of architectures that
> > > actually matter. To me, a spinlock in some theoretical case is
> > > uninteresting, but a efficient spinlock implementation on a real
> > > architecture is a big deal that matters a lot.
> >
> > Agreed, reality and efficiency are the prime concerns. Theory
> > serves reality and efficiency, but definitely not the other way
> > around.
> >
> > But if we want locking primitives that don't rely solely on atomic
> > instructions (such as the queued locks that people have been putting
> > forward), we are going to need to wade through a fair bit of theory
> > to make sure that they actually work on real hardware. Subtle bugs
> > in locking primitives is a type of reality that I think we can both
> > agree that we should avoid.
> >
> > Or am I missing your point?
>
> I think one point Linus wanted to make that it's not true that Linux
> has to offer a barrier and locking model that panders to the weakest
> (and craziest!) memory ordering model amongst all the possible Linux
> platforms - theoretical or real metal.
>
> Instead what we want to do is to consciously, intelligently _pick_ a
> sane, maintainable memory model and offer primitives for that - at
> least as far as generic code is concerned. Each architecture can map
> those primitives to the best of its abilities.
>
> Because as we increase abstraction, as we allow more and more complex
> memory ordering details, so does maintainability and robustness
> decrease. So there's a very real crossover point at which point
> increased smarts will actually hurt our code in real life.
>
> [ Same goes for compilers, we draw a line: for example we generally
> turn off strict aliasing optimizations, or we turn off NULL pointer
> check elimination optimizations. ]
>
> I'm not saying this to not discuss theoretical complexities - I'm just
> saying that the craziest memory ordering complexities are probably
> best dealt with by agreeing not to use them ;-)
Thank you for the explanation, Ingo! I do agree with these principles.
That said, I remain really confused. My best guess is that you are
advising me to ask Peter to stiffen up smp_store_release() so that
it preserves the guarantee that unlock+lock provides a full barrier,
thus allowing it to be used in the queued spinlocks as well as in its
original circular-buffer use case. But even that doesn't completely
fit because that was the direction I was going beforehand.
You see, my problem is not the "crazy ordering" DEC Alpha, Itanium,
PowerPC, or even ARM. It is really obvious what instructions to use in
a stiffened-up smp_store_release() for those guys: "mb" for DEC Alpha,
"st.rel" for Itanium, "sync" for PowerPC, and "dmb" for ARM. Believe it
or not, my problem is instead with good old tightly ordered x86.
We -could- just put an mfence into x86's smp_store_release() and
be done with it, but it currently looks like we get the effect of
a full memory barrier without it, at least in the special case of
the high-contention queued-lock handoff. To repeat, it looks like we
preserve the full-memory-barrier property of unlock+lock for x86 -even-
-though- the queued-lock high-contention handoff code contains neither
atomic instructions nor memory-barrier instructions. This is a bit
surprising to me, to say the least. Hence my digging into the theory
to check it -- after all, we cannot prove it correct by testing it.
Here are some other things that you and Linus might be trying to tell me:
o Just say "no" to queued locks. (I am OK with this. NAKs are
after all easier than beating my head against memory models.)
o Don't add store-after-conditional control dependencies to
Documentation/memory-barriers.txt because it is too complicated.
(I am OK with this, I suppose -- but some people really want to
rely on them.)
o Just add general control dependencies, because that is what
people expect. (I have more trouble with this because there
is a -lot- of work needed in many projects to make this happen,
including on ARM, but some work on x86 as well.)
Anything I am missing here?
Thanx, Paul
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2013-11-22 18:49 UTC|newest]
Thread overview: 239+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <cover.1384885312.git.tim.c.chen@linux.intel.com>
2013-11-20 1:37 ` [PATCH v6 0/5] MCS Lock: MCS lock code cleanup and optimizations Tim Chen
2013-11-20 1:37 ` Tim Chen
2013-11-20 1:37 ` Tim Chen
2013-11-20 10:19 ` Will Deacon
2013-11-20 10:19 ` Will Deacon
2013-11-20 12:50 ` Paul E. McKenney
2013-11-20 12:50 ` Paul E. McKenney
2013-11-20 17:00 ` Will Deacon
2013-11-20 17:00 ` Will Deacon
2013-11-20 17:14 ` Paul E. McKenney
2013-11-20 17:14 ` Paul E. McKenney
2013-11-20 17:00 ` Tim Chen
2013-11-20 17:00 ` Tim Chen
2013-11-20 17:16 ` Paul E. McKenney
2013-11-20 17:16 ` Paul E. McKenney
2013-11-20 1:37 ` [PATCH v6 1/5] MCS Lock: Restructure the MCS lock defines and locking code into its own file Tim Chen
2013-11-20 1:37 ` Tim Chen
2013-11-20 1:37 ` Tim Chen
2013-11-20 1:37 ` [PATCH v6 2/5] MCS Lock: optimizations and extra comments Tim Chen
2013-11-20 1:37 ` Tim Chen
2013-11-20 1:37 ` Tim Chen
2013-11-20 1:37 ` [PATCH v6 3/5] MCS Lock: Move mcs_lock/unlock function into its own file Tim Chen
2013-11-20 1:37 ` Tim Chen
2013-11-20 1:37 ` Tim Chen
2013-11-20 1:37 ` [PATCH v6 4/5] MCS Lock: Barrier corrections Tim Chen
2013-11-20 1:37 ` Tim Chen
2013-11-20 1:37 ` Tim Chen
2013-11-20 15:31 ` Paul E. McKenney
2013-11-20 15:31 ` Paul E. McKenney
2013-11-20 15:31 ` Paul E. McKenney
2013-11-20 15:46 ` Will Deacon
2013-11-20 15:46 ` Will Deacon
2013-11-20 17:14 ` Paul E. McKenney
2013-11-20 17:14 ` Paul E. McKenney
2013-11-20 18:43 ` Tim Chen
2013-11-20 18:43 ` Tim Chen
2013-11-20 19:06 ` Paul E. McKenney
2013-11-20 19:06 ` Paul E. McKenney
2013-11-20 20:36 ` Tim Chen
2013-11-20 20:36 ` Tim Chen
2013-11-20 21:44 ` Paul E. McKenney
2013-11-20 21:44 ` Paul E. McKenney
2013-11-20 23:51 ` Tim Chen
2013-11-20 23:51 ` Tim Chen
2013-11-21 4:53 ` Paul E. McKenney
2013-11-21 4:53 ` Paul E. McKenney
2013-11-21 10:17 ` Will Deacon
2013-11-21 10:17 ` Will Deacon
2013-11-21 13:16 ` Paul E. McKenney
2013-11-21 13:16 ` Paul E. McKenney
2013-11-21 10:45 ` Peter Zijlstra
2013-11-21 10:45 ` Peter Zijlstra
2013-11-21 13:18 ` Paul E. McKenney
2013-11-21 13:18 ` Paul E. McKenney
2013-11-21 22:27 ` Linus Torvalds
2013-11-21 22:27 ` Linus Torvalds
2013-11-21 22:52 ` Paul E. McKenney
2013-11-21 22:52 ` Paul E. McKenney
2013-11-22 0:09 ` Linus Torvalds
2013-11-22 0:09 ` Linus Torvalds
2013-11-22 4:08 ` Paul E. McKenney
2013-11-22 4:08 ` Paul E. McKenney
2013-11-22 4:25 ` Linus Torvalds
2013-11-22 4:25 ` Linus Torvalds
2013-11-22 6:23 ` Paul E. McKenney
2013-11-22 6:23 ` Paul E. McKenney
2013-11-22 15:16 ` Ingo Molnar
2013-11-22 15:16 ` Ingo Molnar
2013-11-22 18:49 ` Paul E. McKenney [this message]
2013-11-22 18:49 ` Paul E. McKenney
2013-11-22 19:06 ` Linus Torvalds
2013-11-22 19:06 ` Linus Torvalds
2013-11-22 20:06 ` Paul E. McKenney
2013-11-22 20:06 ` Paul E. McKenney
2013-11-22 20:09 ` Linus Torvalds
2013-11-22 20:09 ` Linus Torvalds
2013-11-22 20:37 ` Paul E. McKenney
2013-11-22 20:37 ` Paul E. McKenney
2013-11-22 21:01 ` Linus Torvalds
2013-11-22 21:01 ` Linus Torvalds
2013-11-22 21:52 ` Paul E. McKenney
2013-11-22 21:52 ` Paul E. McKenney
2013-11-22 22:19 ` Linus Torvalds
2013-11-22 22:19 ` Linus Torvalds
2013-11-23 0:25 ` Paul E. McKenney
2013-11-23 0:25 ` Paul E. McKenney
2013-11-23 0:42 ` Linus Torvalds
2013-11-23 0:42 ` Linus Torvalds
2013-11-23 1:36 ` Paul E. McKenney
2013-11-23 1:36 ` Paul E. McKenney
2013-11-23 2:11 ` Linus Torvalds
2013-11-23 2:11 ` Linus Torvalds
2013-11-23 4:05 ` Paul E. McKenney
2013-11-23 4:05 ` Paul E. McKenney
2013-11-23 11:24 ` Ingo Molnar
2013-11-23 11:24 ` Ingo Molnar
2013-11-23 17:06 ` Paul E. McKenney
2013-11-23 17:06 ` Paul E. McKenney
2013-11-26 12:02 ` Ingo Molnar
2013-11-26 12:02 ` Ingo Molnar
2013-11-26 19:28 ` Paul E. McKenney
2013-11-26 19:28 ` Paul E. McKenney
2013-11-23 20:21 ` Linus Torvalds
2013-11-23 20:21 ` Linus Torvalds
2013-11-23 20:39 ` Linus Torvalds
2013-11-23 20:39 ` Linus Torvalds
2013-11-25 12:09 ` Peter Zijlstra
2013-11-25 12:09 ` Peter Zijlstra
2013-11-25 17:18 ` Will Deacon
2013-11-25 17:18 ` Will Deacon
2013-11-25 17:56 ` Paul E. McKenney
2013-11-25 17:56 ` Paul E. McKenney
2013-11-25 17:54 ` Paul E. McKenney
2013-11-25 17:54 ` Paul E. McKenney
2013-11-23 21:29 ` Peter Zijlstra
2013-11-23 21:29 ` Peter Zijlstra
2013-11-23 22:24 ` Linus Torvalds
2013-11-23 22:24 ` Linus Torvalds
2013-11-25 17:53 ` Paul E. McKenney
2013-11-25 17:53 ` Paul E. McKenney
2013-11-25 18:21 ` Peter Zijlstra
2013-11-25 18:21 ` Peter Zijlstra
2013-11-21 11:03 ` Peter Zijlstra
2013-11-21 11:03 ` Peter Zijlstra
2013-11-21 12:56 ` Peter Zijlstra
2013-11-21 12:56 ` Peter Zijlstra
2013-11-21 13:20 ` Paul E. McKenney
2013-11-21 13:20 ` Paul E. McKenney
2013-11-21 17:25 ` Paul E. McKenney
2013-11-21 17:25 ` Paul E. McKenney
2013-11-21 21:52 ` Peter Zijlstra
2013-11-21 21:52 ` Peter Zijlstra
2013-11-21 22:18 ` Paul E. McKenney
2013-11-21 22:18 ` Paul E. McKenney
2013-11-22 15:58 ` Peter Zijlstra
2013-11-22 15:58 ` Peter Zijlstra
2013-11-22 18:26 ` Paul E. McKenney
2013-11-22 18:26 ` Paul E. McKenney
2013-11-22 18:51 ` Peter Zijlstra
2013-11-22 18:51 ` Peter Zijlstra
2013-11-22 18:59 ` Paul E. McKenney
2013-11-22 18:59 ` Paul E. McKenney
2013-11-25 17:35 ` Peter Zijlstra
2013-11-25 17:35 ` Peter Zijlstra
2013-11-25 18:02 ` Paul E. McKenney
2013-11-25 18:02 ` Paul E. McKenney
2013-11-25 18:24 ` Peter Zijlstra
2013-11-25 18:24 ` Peter Zijlstra
2013-11-25 18:34 ` Tim Chen
2013-11-25 18:34 ` Tim Chen
2013-11-25 18:27 ` Peter Zijlstra
2013-11-25 18:27 ` Peter Zijlstra
2013-11-25 23:52 ` Paul E. McKenney
2013-11-25 23:52 ` Paul E. McKenney
2013-11-26 9:59 ` Peter Zijlstra
2013-11-26 9:59 ` Peter Zijlstra
2013-11-26 17:11 ` Paul E. McKenney
2013-11-26 17:11 ` Paul E. McKenney
2013-11-26 17:18 ` Peter Zijlstra
2013-11-26 17:18 ` Peter Zijlstra
2013-11-26 19:00 ` Linus Torvalds
2013-11-26 19:00 ` Linus Torvalds
2013-11-26 19:20 ` Paul E. McKenney
2013-11-26 19:20 ` Paul E. McKenney
2013-11-26 19:32 ` Linus Torvalds
2013-11-26 19:32 ` Linus Torvalds
2013-11-26 22:51 ` Paul E. McKenney
2013-11-26 22:51 ` Paul E. McKenney
2013-11-26 23:58 ` Linus Torvalds
2013-11-26 23:58 ` Linus Torvalds
2013-11-27 0:21 ` Thomas Gleixner
2013-11-27 0:21 ` Thomas Gleixner
2013-11-27 0:39 ` Paul E. McKenney
2013-11-27 0:39 ` Paul E. McKenney
2013-11-27 1:05 ` Linus Torvalds
2013-11-27 1:05 ` Linus Torvalds
2013-11-27 1:31 ` Paul E. McKenney
2013-11-27 1:31 ` Paul E. McKenney
2013-11-27 10:16 ` Will Deacon
2013-11-27 10:16 ` Will Deacon
2013-11-27 17:11 ` Paul E. McKenney
2013-11-27 17:11 ` Paul E. McKenney
2013-11-28 11:40 ` Will Deacon
2013-11-28 11:40 ` Will Deacon
2013-11-28 17:38 ` Paul E. McKenney
2013-11-28 17:38 ` Paul E. McKenney
2013-11-28 18:03 ` Will Deacon
2013-11-28 18:03 ` Will Deacon
2013-11-28 18:27 ` Paul E. McKenney
2013-11-28 18:27 ` Paul E. McKenney
2013-11-28 18:53 ` Will Deacon
2013-11-28 18:53 ` Will Deacon
2013-11-28 19:50 ` Paul E. McKenney
2013-11-28 19:50 ` Paul E. McKenney
2013-11-29 16:17 ` Will Deacon
2013-11-29 16:17 ` Will Deacon
2013-11-29 16:44 ` Linus Torvalds
2013-11-29 16:44 ` Linus Torvalds
2013-11-29 18:18 ` Will Deacon
2013-11-29 18:18 ` Will Deacon
2013-11-30 17:38 ` Paul E. McKenney
2013-11-30 17:38 ` Paul E. McKenney
2013-11-26 19:21 ` Peter Zijlstra
2013-11-26 19:21 ` Peter Zijlstra
2013-11-27 16:58 ` Oleg Nesterov
2013-11-27 16:58 ` Oleg Nesterov
2013-11-26 23:08 ` Benjamin Herrenschmidt
2013-11-26 23:08 ` Benjamin Herrenschmidt
2013-11-25 23:55 ` H. Peter Anvin
2013-11-25 23:55 ` H. Peter Anvin
2013-11-26 3:16 ` Paul E. McKenney
2013-11-26 3:16 ` Paul E. McKenney
2013-11-27 0:46 ` H. Peter Anvin
2013-11-27 0:46 ` H. Peter Anvin
2013-11-27 1:07 ` Linus Torvalds
2013-11-27 1:07 ` Linus Torvalds
2013-11-27 1:27 ` Paul E. McKenney
2013-11-27 1:27 ` Paul E. McKenney
2013-11-27 2:59 ` H. Peter Anvin
2013-11-27 2:59 ` H. Peter Anvin
2013-11-25 18:52 ` H. Peter Anvin
2013-11-25 18:52 ` H. Peter Anvin
2013-11-25 22:58 ` Tim Chen
2013-11-25 22:58 ` Tim Chen
2013-11-25 23:28 ` H. Peter Anvin
2013-11-25 23:28 ` H. Peter Anvin
2013-11-25 23:51 ` Paul E. McKenney
2013-11-25 23:51 ` Paul E. McKenney
2013-11-25 23:36 ` Paul E. McKenney
2013-11-25 23:36 ` Paul E. McKenney
2013-12-04 21:26 ` Andi Kleen
2013-12-04 21:26 ` Andi Kleen
2013-12-04 22:07 ` Paul E. McKenney
2013-12-04 22:07 ` Paul E. McKenney
2013-11-21 13:19 ` Paul E. McKenney
2013-11-21 13:19 ` Paul E. McKenney
2013-11-20 1:37 ` [PATCH v6 5/5] MCS Lock: Allows for architecture specific mcs lock and unlock Tim Chen
2013-11-20 1:37 ` Tim Chen
2013-11-20 1:37 ` Tim Chen
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=20131122184937.GX4138@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=a.p.zijlstra@chello.nl \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=alex.shi@linaro.org \
--cc=andi@firstfloor.org \
--cc=dave.hansen@intel.com \
--cc=davidlohr.bueso@hp.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=matthew.r.wilcox@intel.com \
--cc=mingo@elte.hu \
--cc=mingo@kernel.org \
--cc=riel@redhat.com \
--cc=tglx@linutronix.de \
--cc=tim.c.chen@linux.intel.com \
--cc=torvalds@linux-foundation.org \
--cc=waiman.long@hp.com \
--cc=walken@google.com \
--cc=will.deacon@arm.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.