summaryrefslogtreecommitdiffstats
path: root/tools/memory-model
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2018-05-14 19:33:49 -0400
committerIngo Molnar <mingo@kernel.org>2018-05-15 02:11:17 -0400
commit1bd3742043fa44dd0ec25770abdcdfe1f6e8681e (patch)
tree62075928e45d930e1af8dda515ef3f30618631d0 /tools/memory-model
parent15553dcbca0638de57047e79b9fb4ea77aa04db3 (diff)
tools/memory-model: Flag "cumulativity" and "propagation" tests
This commit flags WRC+pooncerelease+rmbonceonce+Once.litmus as being forbidden by smp_store_release() A-cumulativity and IRIW+mbonceonces+OnceOnce.litmus as being forbidden by the LKMM propagation rule. Suggested-by: Andrea Parri <andrea.parri@amarulasolutions.com> Reported-by: Paolo Bonzini <pbonzini@redhat.com> [ paulmck: Updated wording as suggested by Alan Stern. ] Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Acked-by: Alan Stern <stern@rowland.harvard.edu> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Will Deacon <will.deacon@arm.com> Cc: akiyks@gmail.com Cc: boqun.feng@gmail.com Cc: dhowells@redhat.com Cc: j.alglave@ucl.ac.uk Cc: linux-arch@vger.kernel.org Cc: luc.maranget@inria.fr Cc: npiggin@gmail.com Cc: parri.andrea@gmail.com Link: http://lkml.kernel.org/r/1526340837-12222-11-git-send-email-paulmck@linux.vnet.ibm.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'tools/memory-model')
-rw-r--r--tools/memory-model/litmus-tests/IRIW+mbonceonces+OnceOnce.litmus2
-rw-r--r--tools/memory-model/litmus-tests/README9
-rw-r--r--tools/memory-model/litmus-tests/WRC+pooncerelease+rmbonceonce+Once.litmus4
3 files changed, 10 insertions, 5 deletions
diff --git a/tools/memory-model/litmus-tests/IRIW+mbonceonces+OnceOnce.litmus b/tools/memory-model/litmus-tests/IRIW+mbonceonces+OnceOnce.litmus
index 50d5db9ea983..98a3716efa37 100644
--- a/tools/memory-model/litmus-tests/IRIW+mbonceonces+OnceOnce.litmus
+++ b/tools/memory-model/litmus-tests/IRIW+mbonceonces+OnceOnce.litmus
@@ -7,7 +7,7 @@ C IRIW+mbonceonces+OnceOnce
7 * between each pairs of reads. In other words, is smp_mb() sufficient to 7 * between each pairs of reads. In other words, is smp_mb() sufficient to
8 * cause two different reading processes to agree on the order of a pair 8 * cause two different reading processes to agree on the order of a pair
9 * of writes, where each write is to a different variable by a different 9 * of writes, where each write is to a different variable by a different
10 * process? 10 * process? This litmus test exercises LKMM's "propagation" rule.
11 *) 11 *)
12 12
13{} 13{}
diff --git a/tools/memory-model/litmus-tests/README b/tools/memory-model/litmus-tests/README
index 6919909bbd0f..17eb9a8c222d 100644
--- a/tools/memory-model/litmus-tests/README
+++ b/tools/memory-model/litmus-tests/README
@@ -23,7 +23,8 @@ IRIW+mbonceonces+OnceOnce.litmus
23 between each pairs of reads. In other words, is smp_mb() 23 between each pairs of reads. In other words, is smp_mb()
24 sufficient to cause two different reading processes to agree on 24 sufficient to cause two different reading processes to agree on
25 the order of a pair of writes, where each write is to a different 25 the order of a pair of writes, where each write is to a different
26 variable by a different process? 26 variable by a different process? This litmus test is forbidden
27 by LKMM's propagation rule.
27 28
28IRIW+poonceonces+OnceOnce.litmus 29IRIW+poonceonces+OnceOnce.litmus
29 Test of independent reads from independent writes with nothing 30 Test of independent reads from independent writes with nothing
@@ -119,8 +120,10 @@ S+wmbonceonce+poacquireonce.litmus
119 120
120WRC+poonceonces+Once.litmus 121WRC+poonceonces+Once.litmus
121WRC+pooncerelease+rmbonceonce+Once.litmus 122WRC+pooncerelease+rmbonceonce+Once.litmus
122 These two are members of an extension of the MP litmus-test class 123 These two are members of an extension of the MP litmus-test
123 in which the first write is moved to a separate process. 124 class in which the first write is moved to a separate process.
125 The second is forbidden because smp_store_release() is
126 A-cumulative in LKMM.
124 127
125Z6.0+pooncelock+pooncelock+pombonce.litmus 128Z6.0+pooncelock+pooncelock+pombonce.litmus
126 Is the ordering provided by a spin_unlock() and a subsequent 129 Is the ordering provided by a spin_unlock() and a subsequent
diff --git a/tools/memory-model/litmus-tests/WRC+pooncerelease+rmbonceonce+Once.litmus b/tools/memory-model/litmus-tests/WRC+pooncerelease+rmbonceonce+Once.litmus
index 97fcbffde9a0..ad3448b941e6 100644
--- a/tools/memory-model/litmus-tests/WRC+pooncerelease+rmbonceonce+Once.litmus
+++ b/tools/memory-model/litmus-tests/WRC+pooncerelease+rmbonceonce+Once.litmus
@@ -5,7 +5,9 @@ C WRC+pooncerelease+rmbonceonce+Once
5 * 5 *
6 * This litmus test is an extension of the message-passing pattern, where 6 * This litmus test is an extension of the message-passing pattern, where
7 * the first write is moved to a separate process. Because it features 7 * the first write is moved to a separate process. Because it features
8 * a release and a read memory barrier, it should be forbidden. 8 * a release and a read memory barrier, it should be forbidden. More
9 * specifically, this litmus test is forbidden because smp_store_release()
10 * is A-cumulative in LKMM.
9 *) 11 *)
10 12
11{} 13{}