diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2018-05-14 19:33:49 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2018-05-15 02:11:17 -0400 |
commit | 1bd3742043fa44dd0ec25770abdcdfe1f6e8681e (patch) | |
tree | 62075928e45d930e1af8dda515ef3f30618631d0 /tools/memory-model | |
parent | 15553dcbca0638de57047e79b9fb4ea77aa04db3 (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')
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 | ||
28 | IRIW+poonceonces+OnceOnce.litmus | 29 | IRIW+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 | ||
120 | WRC+poonceonces+Once.litmus | 121 | WRC+poonceonces+Once.litmus |
121 | WRC+pooncerelease+rmbonceonce+Once.litmus | 122 | WRC+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 | ||
125 | Z6.0+pooncelock+pooncelock+pombonce.litmus | 128 | Z6.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 | {} |