public inbox for linux-arch@vger.kernel.org
 help / color / mirror / Atom feed
* mips octeon memory model questions
@ 2014-02-04 18:41 Peter Zijlstra
  2014-02-04 18:41 ` Peter Zijlstra
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Peter Zijlstra @ 2014-02-04 18:41 UTC (permalink / raw)
  To: David Daney, Ralf Baechle
  Cc: linux-arch, linux-mips, linux-kernel, Paul McKenney, Will Deacon,
	Linus Torvalds

Hi all,

I have a number of questions in regards to commit 6b07d38aaa520ce.

Given that the octeon doesn't reorder reads; the following:

"      sync
       ll ...
       .
       .
       .
       sc ...
       .
       .
       sync

  The second SYNC was redundant, but harmless.  "

Still doesn't make sense, because if we need the first sync to stop
writes from being re-ordered with the ll-sc, we also need the second
sync to avoid the same.

Suppose:
   STORE a
   sync
   LL-SC b
   (not a sync)
   STORE c

What avoids this becoming visible as:

  a
  c
  b

?

Then there is:

"       syncw;syncw
        ll
        .
        .
        .
        sc
        .
        .

    Has identical semantics to the first sequence, but is much faster.
    The SYNCW orders the writes, and the SC will not complete successfully
    until the write is committed to the coherent memory system.  So at the
    end all preceeding writes have been committed.  Since Octeon does not
    do speculative reads, this functions as a full barrier."

Read Documentation/memory-barrier.txt:TRANSITIVITY, the above doesn't
sound like syncw is actually multi-copy atomic, and therefore doesn't
provide transitivity, and therefore is not a valid sequence for
operations that are supposed to imply a full memory-barrier.

Please as to explain.

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2014-02-06 11:45 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-02-04 18:41 mips octeon memory model questions Peter Zijlstra
2014-02-04 18:41 ` Peter Zijlstra
2014-02-04 18:58 ` Linus Torvalds
2014-02-04 19:05   ` Peter Zijlstra
2014-02-04 19:05     ` Peter Zijlstra
2014-02-04 19:16     ` Linus Torvalds
2014-02-04 19:39       ` Peter Zijlstra
2014-02-04 19:51 ` David Daney
2014-02-06 11:45   ` Peter Zijlstra

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox