lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 12 Jul 2018 19:45:27 +0200 From: Andrea Parri <andrea.parri@...rulasolutions.com> To: Peter Zijlstra <peterz@...radead.org> Cc: Will Deacon <will.deacon@....com>, Alan Stern <stern@...land.harvard.edu>, "Paul E. McKenney" <paulmck@...ux.vnet.ibm.com>, LKMM Maintainers -- Akira Yokosawa <akiyks@...il.com>, Boqun Feng <boqun.feng@...il.com>, Daniel Lustig <dlustig@...dia.com>, David Howells <dhowells@...hat.com>, Jade Alglave <j.alglave@....ac.uk>, Luc Maranget <luc.maranget@...ia.fr>, Nicholas Piggin <npiggin@...il.com>, Kernel development list <linux-kernel@...r.kernel.org>, Linus Torvalds <torvalds@...ux-foundation.org> Subject: Re: [PATCH v2] tools/memory-model: Add extra ordering for locks and remove it for ordinary release/acquire > Anyway, back to the problem of being able to use the memory model to > describe locks. This is I think a useful property. > > My earlier reasoning was that: > > - smp_store_release() + smp_load_acquire() := RCpc > > - we use smp_store_release() as unlock() > > Therefore, if we want unlock+lock to imply at least TSO (ideally > smp_mb()) we need lock to make up for whatever unlock lacks. > > Hence my proposal to strenghten rmw-acquire, because that is the basic > primitive used to implement lock. > > But as you (and Will) point out, we don't so much care about rmw-acquire > semantics as much as that we care about unlock+lock behaviour. Another > way to look at this is to define: > > smp-store-release + rmw-acquire := TSO (ideally smp_mb) > > But then we also have to look at: > > rmw-release + smp-load-acquire > rmw-release + rmw-acquire > > for completeness sake, and I would suggest they result in (at least) the > same (TSO) ordering as the one we really care about. Indeed (unless I'm not seeing something... ;-). > > One alternative is to no longer use smp_store_release() for unlock(), > and say define atomic_set_release() to be in the rmw-release class > instead of being a simple smp_store_release(). > > Another, and I like this proposal least, is to introduce a new barrier > to make this all work. An smp_tso__after_unlock_lock()? (In a certain sense, the solution adopted by RCU aligns to this approach: live with powerpc's RCpc and introduce smp_mb__after_unlock_lock().) Or did you have something else in mind? But I wouldn't hasten to introduce such a barrier, given that: (1) this would be a "do { } while (0)" for all the supported arch. _if_ we sticked to the current implementations, and (2) even if these implementations changed or some new arch. required a non-trivial definition, we still would have to find a "pure/TSO" case ;-). Andrea
Powered by blists - more mailing lists