Thread (152 messages) 152 messages, 13 authors, 2016-04-14

Re: [v3,11/41] mips: reuse asm-generic/barrier.h

From: Will Deacon <hidden>
Date: 2016-01-12 11:41:21
Also in: linux-arch, linux-arm-kernel, linux-mips, linux-s390, linux-um, linuxppc-dev, lkml, sparclinux, virtualization

On Tue, Jan 12, 2016 at 11:40:12AM +0100, Peter Zijlstra wrote:
On Tue, Jan 12, 2016 at 11:25:55AM +0100, Peter Zijlstra wrote:
quoted
On Tue, Jan 12, 2016 at 10:27:11AM +0100, Peter Zijlstra wrote:
quoted
2) the changelog _completely_ fails to explain the sync 0x11 and sync
0x12 semantics nor does it provide a publicly accessible link to
documentation that does.
Ralf pointed me at: https://imgtec.com/mips/architectures/mips64/
quoted
3) it really should have explained what you did with
smp_llsc_mb/smp_mb__before_llsc() in _detail_.
And reading the MIPS64 v6.04 instruction set manual, I think 0x11/0x12
are _NOT_ transitive and therefore cannot be used to implement the
smp_mb__{before,after} stuff.

That is, in MIPS speak, those SYNC types are Ordering Barriers, not
Completion Barriers. They need not be globally performed.
Which if true; and I know Will has some questions here; would also mean
that you 'cannot' use the ACQUIRE/RELEASE barriers for your locks as was
recently suggested by David Daney.
The issue I have with the SYNC description in the text above is that it
describes the single CPU (program order) and the dual-CPU (confusingly
named global order) cases, but then doesn't generalise any further. That
means we can't sensibly reason about transitivity properties when a third
agent is involved. For example, the WRC+sync+addr test:


P0:
Wx = 1

P1:
Rx = 1
SYNC
Wy = 1

P2:
Ry = 1
<address dep>
Rx = 0


I can't find anything to forbid that, given the text. The main problem
is having the SYNC on P1 affect the write by P0.
That is, currently all architectures -- with exception of PPC -- have
RCsc locks, but using these non-transitive things will get you RCpc
locks.

So yes, MIPS can go RCpc for its locks and share the burden of pain with
PPC, but that needs to be a very concious decision.
I think it's much worse than RCpc, given my interpretation of the wording.

Will
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help