Hello!

This series applies some long-needed updates to memory-barriers.txt and
adds an smp_mb__after_unlock_lock():

1.      Add ACCESS_ONCE() calls where needed to ensure their inclusion
        in code copy-and-pasted from this file.

2.      Add long atomic examples alongside the existing atomics.

3.      Prohibit architectures supporting the Linux kernel from
        speculating stores.

4.      Document what ACCESS_ONCE() does along with a number of situations
        requiring its use.

5.      Added smp_mb__after_unlock_lock() for all architectures.  Because
        all architectures are presumably providing full-barrier semantics
        for UNLOCK+LOCK, these are all no-ops (but see #8 below).  Some
        will change if low-latency-handoff queued locks are accepted.

6.      Downgrade UNLOCK+LOCK to no longer imply a full barrier, at least
        in the absence of smp_mb__after_unlock_lock().  See the LKML thread
        that includes http://www.spinics.net/lists/linux-mm/msg65653.html
        for more information.

7.      Applied smp_mb__after_unlock_lock() as needed in RCU.

8.      Make smp_mb__after_unlock_lock() be a full memory barrier for powerpc.

Changes from v5:

o       Added #8 (full memory barrier for powerpc).

o       Made the definition of smp_mb__after_unlock_lock() precede its
        documentation as suggested by Josh Triplett.

o       Added verbiage describing acquire and release semantics of
        LOCK and UNLOCK, respectively.

o       Updates based on Oleg Nesterov review.

Changes from v4:

o       Added Josh Triplett's Reviewed-by for 1-4.

o       Applied feedback from Ingo Molnar and Jonathan Corbet.

o       Trimmed Cc lists as suggested by David Miller.

o       Added smp_mb__after_unlock_lock() changes.

Changes from v3:

o       Fix typos noted by Peter Zijlstra.

o       Added the documentation about ACCESS_ONCE(), which expands on
        http://thread.gmane.org/gmane.linux.kernel.mm/82891/focus=14696,
        ably summarized by Jon Corbet at http://lwn.net/Articles/508991/.

Changes from v2:

o       Update examples so that that load against which the subsequent
        store is to be ordered is part of the "if" condition.

o       Add an example showing how the compiler can remove "if"
        conditions and how to prevent it from doing so.

o       Add ACCESS_ONCE() to the compiler-barrier section.

o       Add a sentence noting that transitivity requires smp_mb().

Changes from v1:

o       Combined with Peter Zijlstra's speculative-store-prohibition patch.

o       Added more pitfalls to avoid when prohibiting speculative
        stores, along with how to avoid them.

o       Applied Josh Triplett's review comments.

                                                        Thanx, Paul

------------------------------------------------------------------------

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

Reply via email to