On Aug 3, 2016 11:31 AM, "Christoph Lameter" [off-list ref] wrote:
On Wed, 3 Aug 2016, Andy Lutomirski wrote:
quoted
quoted
Well, a CMPXCHG without LOCK prefix isn't all that expensive on x86.
It is however on PPC and possibly other architectures, so in name of
simplicity supporting only the one variant makes sense.
I wouldn't want to depend on CMPXCHG. But imagine we had primitives
that were narrower than the full abort-on-preemption primitive.
Specifically, suppose we had abort if (actual cpu != expected_cpu ||
*aptr != aval). We could do things like:
The latency issues that are addressed by restartable sequences require
minimim instruction overhead. Lockless CMPXCHG is very important in that
area and I would not simply remove it from consideration.
What I mean is: I think the solution shouldn't depend on the
x86-specific unlocked CMPXCHG instruction if it can be avoided.