[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20140714115738.GW19379@twins.programming.kicks-ass.net>
Date: Mon, 14 Jul 2014 13:57:38 +0200
From: Peter Zijlstra <peterz@...radead.org>
To: "Paul E. McKenney" <paulmck@...ux.vnet.ibm.com>
Cc: linux-kernel@...r.kernel.org, mingo@...nel.org,
laijs@...fujitsu.com, dipankar@...ibm.com,
akpm@...ux-foundation.org, mathieu.desnoyers@...icios.com,
josh@...htriplett.org, niv@...ibm.com, tglx@...utronix.de,
rostedt@...dmis.org, dhowells@...hat.com, edumazet@...gle.com,
dvhart@...ux.intel.com, fweisbec@...il.com, oleg@...hat.com,
sbw@....edu
Subject: Re: [PATCH tip/core/rcu 3/4] documentation: Add acquire/release
barriers to pairing rules
On Tue, Jul 08, 2014 at 08:31:17AM -0700, Paul E. McKenney wrote:
> Good point, how about the following?
>
> General barriers pair with each other, though they also pair
> with most other types of barriers, albeit without transitivity.
> An acquire barrier pairs with a release barrier, but both may also
> pair with other barriers, including of course general barriers.
> A write barrier pairs with a data dependency barrier, an acquire
> barrier, a release barrier, a read barrier, or a general barrier.
> Similarly a read barrier or a data dependency barrier pairs
> with a write barrier, an acquire barrier, a release barrier,
> or a general barrier:
It might be clearer with the added whitespace, or as an explicit list I
suppose, but yes.
> > Also, it might be good to have a section on the ramifications of pairing
> > acquire/release with other than themselves, I have the feeling there's
> > subtle things there.
>
> It can get quite subtle. For the time being, I am dodging this subtlety
> by saying that only general barriers provide transitivity (see the
> "TRANSITIVITY" section).
Ah, I was more thinking of the fact that ACQUIRE/RELEASE are
semi-permeable while READ/WRITE are memop dependent.
So any combination will be a semi-permeable memop dependent thing,
which is the most narrow barrier possible.
So if we thing of ACQUIRE/RELEASE as being 'half' a full barrier,
separated in direction, and READ/WRITE as being 'half' a full barrier
separated on type, then the combination is a 'quarter' barrier.
Not arguing they're not useful, just saying we need to be extra careful.
> Maybe some day we should capture this subtlety in memory-barriers.txt,
> but we will first need a new generation of small children who are not
> scared by the current document. ;-)
Lolz :-)
Content of type "application/pgp-signature" skipped
Powered by blists - more mailing lists