Re: [PATCH v8 4/4] qrwlock: Use smp_store_release() in write_unlock()

From: Waiman Long
Date: Tue Jan 21 2014 - 11:16:13 EST


On 01/21/2014 10:41 AM, Peter Zijlstra wrote:
On Tue, Jan 21, 2014 at 10:02:06AM -0500, Waiman Long wrote:
My latest v9 series of qrwlock patch will automatically adapt to the lack of
atomic byte access by using an atomic integer instruction instead. So the
new series should work for pre-EV56 Alpha, it is just a bit less efficient
in this case.
See my other email; I don't think you can do that without also changing
the implementation of the queue_read_{try}lock() functions.

Without those changes you can have transient values in your 'read-count'
part of the word and a full word write will wreck things.

I don't see any problem with my current logic. If a writer has the write lock, the writer byte has to have a value of 0xff. So atomically subtracting 0xff from it will guarantee that the writer byte will become zero, which is the same as assigning a zero value to that byte. The only difference is that an atomic subtract instruction will need to be used instead of a simple byte assignment.

Please let me know if there is any flaw in my logic.

-Longman
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/