tools/memory-model: Provide extra ordering for unlock+lock pair on the same CPU
authorBoqun Feng <boqun.feng@gmail.com>
Mon, 25 Oct 2021 14:54:14 +0000 (22:54 +0800)
committerPaul E. McKenney <paulmck@kernel.org>
Wed, 1 Dec 2021 01:47:08 +0000 (17:47 -0800)
commitddfe12944e84830fe7dc490992e55b4fa773555e
tree160f73d10ba864f1fd4c8994794941a6d80175c3
parentfa55b7dcdc43c1aa1ba12bca9d2dd4318c2a0dbf
tools/memory-model: Provide extra ordering for unlock+lock pair on the same CPU

A recent discussion[1] shows that we are in favor of strengthening the
ordering of unlock + lock on the same CPU: a unlock and a po-after lock
should provide the so-called RCtso ordering, that is a memory access S
po-before the unlock should be ordered against a memory access R
po-after the lock, unless S is a store and R is a load.

The strengthening meets programmers' expection that "sequence of two
locked regions to be ordered wrt each other" (from Linus), and can
reduce the mental burden when using locks. Therefore add it in LKMM.

[1]: https://lore.kernel.org/lkml/20210909185937.GA12379@rowland.harvard.edu/

Co-developed-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
Reviewed-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc)
Acked-by: Palmer Dabbelt <palmerdabbelt@google.com> (RISC-V)
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
tools/memory-model/Documentation/explanation.txt
tools/memory-model/linux-kernel.cat