On Fri, Mar 27, 2020 at 06:18:43PM -0400, Joel Fernandes wrote: > On Thu, Mar 26, 2020 at 10:40:18AM +0800, Boqun Feng wrote: > > A recent discussion raises up the requirement for having test cases for > > atomic APIs: > > > > https://lore.kernel.org/lkml/20200213085849.GL14897@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/ > > > > , and since we already have a way to generate a test module from a > > litmus test with klitmus[1]. It makes sense that we add more litmus > > tests for atomic APIs. And based on the previous discussion, I create a > > new directory Documentation/atomic-tests and put these litmus tests > > here. > > > > This patchset starts the work by adding the litmus tests which are > > already used in atomic_t.txt, and also improve the atomic_t.txt to make > > it consistent with the litmus tests. > > > > Previous version: > > v1: https://lore.kernel.org/linux-doc/20200214040132.91934-1-boqun.feng@xxxxxxxxx/ > > v2: https://lore.kernel.org/lkml/20200219062627.104736-1-boqun.feng@xxxxxxxxx/ > > v3: https://lore.kernel.org/linux-doc/20200227004049.6853-1-boqun.feng@xxxxxxxxx/ > > For full series: > > Reviewed-by: Joel Fernandes (Google) <joel@xxxxxxxxxxxxxxxxx> Queued in place of the following commits, with Joel's and Alan's tags added, thank you all! Thanx, Paul c13c55d4 tools/memory-model: Add an exception for limitations on _unless() family 59ffd85 Documentation/locking/atomic: Fix atomic-set litmus test 23c19c8 Documentation/locking/atomic: Introduce atomic-tests directory 3bd201c Documentation/locking/atomic: Add a litmus test for atomic_set() 833f53b Documentation/locking/atomic: Add a litmus test smp_mb__after_atomic() > One question I had was in the existing atomic_set() documentation, it talks > about atomic_add_unless() implementation based on locking could have issues. > It says the way to fix such cases is: > > Quote: > the typical solution is to then implement atomic_set{}() with > atomic_xchg(). > > I didn't get how using atomic_xchg() fixes it. Is the assumption there that > atomic_xchg() would be implemented using locking to avoid atomic_set() having > issues? If so, we could clarify that in the document. > > thanks, > > - Joel > > > > > Changes since v3: > > > > * Merge two patches on atomic-set litmus test into one as per > > Alan. (Alan, you have acked only one of the two patches, so I > > don't add you acked-by for the combined patch). > > > > * Move the atomic litmus tests into litmus-tests/atomic to align > > with Joel's recent patches on RCU litmus tests. > > > > I think we still haven't reach to a conclusion for the difference of > > atomic_add_unless() in herdtools, and I'm currently reading the source > > code of herd to resovle this. This is just an updated version to resolve > > ealier comments and react on Joel's RCU litmus tests. > > > > Regards, > > Boqun > > > > [1]: http://diy.inria.fr/doc/litmus.html#klitmus > > > > Boqun Feng (4): > > tools/memory-model: Add an exception for limitations on _unless() > > family > > Documentation/litmus-tests: Introduce atomic directory > > Documentation/litmus-tests/atomic: Add a test for atomic_set() > > Documentation/litmus-tests/atomic: Add a test for > > smp_mb__after_atomic() > > > > Documentation/atomic_t.txt | 24 +++++++------- > > ...ter_atomic-is-stronger-than-acquire.litmus | 32 +++++++++++++++++++ > > ...c-RMW-ops-are-atomic-WRT-atomic_set.litmus | 24 ++++++++++++++ > > Documentation/litmus-tests/atomic/README | 16 ++++++++++ > > tools/memory-model/README | 10 ++++-- > > 5 files changed, 91 insertions(+), 15 deletions(-) > > create mode 100644 Documentation/litmus-tests/atomic/Atomic-RMW+mb__after_atomic-is-stronger-than-acquire.litmus > > create mode 100644 Documentation/litmus-tests/atomic/Atomic-RMW-ops-are-atomic-WRT-atomic_set.litmus > > create mode 100644 Documentation/litmus-tests/atomic/README > > > > -- > > 2.25.1 > >