Linus,

Please pull the latest locking-core-for-linus git tree from:

   git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 
locking-core-for-linus

   # HEAD: d420acd816c07c7be31bd19d09cbcb16e5572fa6 jump_label/x86: Work around 
asm build bug on older/backported GCCs

Main changes in this cycle are:

  - Extend atomic primitives with coherent logic op primitives 
(atomic_{or,and,xor}())
    and deprecate the old partial APIs (atomic_{set,clear}_mask())

    The old ops were incoherent with incompatible signatures across 
architectures
    and with incomplete support. Now every architecture supports the primitives
    consistently. (by Peter Zijlstra)

  - Generic support for 'relaxed atomics':

      - _acquire/release/relaxed() flavours of xchg(), cmpxchg() and 
{add,sub}_return()
      - atomic_read_acquire()
      - atomic_set_release()

    This came out of porting qwrlock code to arm64.

    (by Will Deacon)

  - Clean up the fragile static_key APIs that were causing repeat bugs, by 
    introducing a new one:

      DEFINE_STATIC_KEY_TRUE(name);
      DEFINE_STATIC_KEY_FALSE(name);

    Which define a key of different types with an initial true/false value.

    Then allow:

       static_branch_likely()
       static_branch_unlikely()

    to take a key of either type and emit the right instruction for the case.
    To be able to know the 'type' of the static key we encode it in the jump
    entry.

    (by Peter Zijlstra)

   - Static key self-tests. (by Jason Baron)

   - qrwlock optimizations. (by Waiman Long)

   - small futex enhancements. (by Davidlohr Bueso)

   - ... and misc other changes

 Thanks,

        Ingo

------------------>
Andrey Konovalov (1):
      locking, arch: use WRITE_ONCE()/READ_ONCE() in 
smp_store_release()/smp_load_acquire()

Chris Metcalf (1):
      tile: Provide atomic_{or,xor,and}

Christian Borntraeger (1):
      locking, compiler.h: Cast away attributes in the WRITE_ONCE() magic

Davidlohr Bueso (3):
      futex: Enhance comments in futex_lock_pi() for blocking paths
      futex: Fault/error injection capabilities
      rtmutex: Delete scriptable tester

Heiko Carstens (1):
      s390/uaccess, locking/static_keys: employ static_branch_likely()

Ingo Molnar (1):
      locking/static_keys: Provide a selftest

Jason Baron (2):
      jump_label: Provide a self-test
      jump label, locking/static_keys: Update docs

Peter Zijlstra (37):
      atomic: Prepare generic atomic implementation for logic ops
      alpha: Provide atomic_{or,xor,and}
      arc: Provide atomic_{or,xor,and}
      arm: Provide atomic_{or,xor,and}
      arm64: Provide atomic_{or,xor,and}
      avr32: Provide atomic_{or,xor,and}
      blackfin: Provide atomic_{or,xor,and}
      hexagon: Provide atomic_{or,xor,and}
      ia64: Provide atomic_{or,xor,and}
      m32r: Provide atomic_{or,xor,and}
      m68k: Provide atomic_{or,xor,and}
      metag: Provide atomic_{or,xor,and}
      mips: Provide atomic_{or,xor,and}
      mn10300: Provide atomic_{or,xor,and}
      parisc: Provide atomic_{or,xor,and}
      powerpc: Provide atomic_{or,xor,and}
      sh: Provide atomic_{or,xor,and}
      sparc: Provide atomic_{or,xor,and}
      xtensa: Provide atomic_{or,xor,and}
      s390: Provide atomic_{or,xor,and}
      x86: Provide atomic_{or,xor,and}
      frv: Rewrite atomic implementation
      h8300: Provide atomic_{or,xor,and}
      atomic: Provide atomic_{or,xor,and}
      atomic: Collapse all atomic_{set,clear}_mask definitions
      atomic: Replace atomic_{set,clear}_mask() usage
      atomic: Add simple atomic_t tests
      locking: Clean up pvqspinlock warning
      jump_label: Rename JUMP_LABEL_{EN,DIS}ABLE to JUMP_LABEL_{JMP,NOP}
      jump_label, locking/static_keys: Rename JUMP_LABEL_TYPE_* and related 
helpers to the static_key* pattern
      jump_label: Add jump_entry_key() helper
      locking/static_keys: Add static_key_{en,dis}able() helpers
      locking/static_keys: Rework update logic
      locking/static_keys: Add a new static_key interface
      locking/static_keys: Add selftest
      x86, tsc, locking/static_keys: Employ static_branch_likely()
      jump_label/x86: Work around asm build bug on older/backported GCCs

Waiman Long (4):
      locking/qrwlock: Rename functions to queued_*()
      locking/qrwlock: Better optimization for interrupt context readers
      locking/qrwlock: Reduce reader/writer to reader lock transfer latency
      locking/pvqspinlock: Only kick CPU at unlock time

Will Deacon (10):
      locking/Documentation: Clarify failed cmpxchg() memory ordering semantics
      locking/pvqspinlock: Order pv_unhash() after cmpxchg() on unlock slowpath
      locking/atomics: Add _{acquire|release|relaxed}() variants of some atomic 
operations
      locking, asm-generic: Rework atomic-long.h to avoid bulk code duplication
      locking, asm-generic: Add _{relaxed|acquire|release}() variants for 
'atomic_long_t'
      locking/lockref: Remove homebrew cmpxchg64_relaxed() macro definition
      locking/qrwlock: Implement queue_write_unlock() using smp_store_release()
      locking/qrwlock: Make use of _{acquire|release|relaxed}() atomics
      locking, include/llist: Use linux/atomic.h instead of asm/cmpxchg.h
      locking, ARM, atomics: Define our SMP atomics in terms of _relaxed() 
operations

kbuild test robot (2):
      futex: Make should_fail_futex() static
      locking/static_keys: Make verify_keys() static



 Documentation/atomic_ops.txt                       |   4 +-
 Documentation/fault-injection/fault-injection.txt  |  11 +
 Documentation/memory-barriers.txt                  |   6 +-
 Documentation/static-keys.txt                      |  99 ++---
 arch/Kconfig                                       |   6 +
 arch/alpha/include/asm/atomic.h                    |  42 ++-
 arch/arc/include/asm/atomic.h                      |   8 +-
 arch/arm/include/asm/atomic.h                      |  51 +--
 arch/arm/include/asm/barrier.h                     |   4 +-
 arch/arm/include/asm/cmpxchg.h                     |  47 +--
 arch/arm/include/asm/jump_label.h                  |  25 +-
 arch/arm/kernel/jump_label.c                       |   2 +-
 arch/arm64/include/asm/atomic.h                    |  14 +
 arch/arm64/include/asm/barrier.h                   |   4 +-
 arch/arm64/include/asm/jump_label.h                |  18 +-
 arch/arm64/kernel/jump_label.c                     |   2 +-
 arch/avr32/include/asm/atomic.h                    |  12 +
 arch/blackfin/include/asm/atomic.h                 |  16 +-
 arch/blackfin/kernel/bfin_ksyms.c                  |   7 +-
 arch/blackfin/mach-bf561/atomic.S                  |  30 +-
 arch/blackfin/mach-common/smp.c                    |   2 +-
 arch/frv/include/asm/atomic.h                      | 107 +++---
 arch/frv/include/asm/atomic_defs.h                 | 172 +++++++++
 arch/frv/include/asm/bitops.h                      |  99 +----
 arch/frv/kernel/dma.c                              |   6 +-
 arch/frv/kernel/frv_ksyms.c                        |   5 -
 arch/frv/lib/Makefile                              |   2 +-
 arch/frv/lib/atomic-lib.c                          |   7 +
 arch/frv/lib/atomic-ops.S                          | 110 ------
 arch/frv/lib/atomic64-ops.S                        |  94 -----
 arch/h8300/include/asm/atomic.h                    | 137 ++-----
 arch/hexagon/include/asm/atomic.h                  |   4 +
 arch/ia64/include/asm/atomic.h                     |  24 +-
 arch/ia64/include/asm/barrier.h                    |   4 +-
 arch/m32r/include/asm/atomic.h                     |  45 +--
 arch/m32r/kernel/smp.c                             |   4 +-
 arch/m68k/include/asm/atomic.h                     |  14 +-
 arch/metag/include/asm/atomic_lnkget.h             |  38 +-
 arch/metag/include/asm/atomic_lock1.h              |  23 +-
 arch/metag/include/asm/barrier.h                   |   4 +-
 arch/mips/include/asm/atomic.h                     |   7 +
 arch/mips/include/asm/barrier.h                    |   4 +-
 arch/mips/include/asm/jump_label.h                 |  19 +-
 arch/mips/kernel/jump_label.c                      |   2 +-
 arch/mn10300/include/asm/atomic.h                  |  71 +---
 arch/mn10300/mm/tlb-smp.c                          |   2 +-
 arch/parisc/configs/c8000_defconfig                |   1 -
 arch/parisc/configs/generic-32bit_defconfig        |   1 -
 arch/parisc/include/asm/atomic.h                   |   7 +
 arch/powerpc/include/asm/atomic.h                  |   7 +
 arch/powerpc/include/asm/barrier.h                 |   4 +-
 arch/powerpc/include/asm/jump_label.h              |  19 +-
 arch/powerpc/kernel/jump_label.c                   |   2 +-
 arch/powerpc/kernel/misc_32.S                      |  19 -
 arch/s390/include/asm/atomic.h                     |  41 +-
 arch/s390/include/asm/barrier.h                    |   4 +-
 arch/s390/include/asm/jump_label.h                 |  19 +-
 arch/s390/kernel/jump_label.c                      |   2 +-
 arch/s390/kernel/time.c                            |   4 +-
 arch/s390/kvm/interrupt.c                          |  30 +-
 arch/s390/kvm/kvm-s390.c                           |  32 +-
 arch/s390/lib/uaccess.c                            |  12 +-
 arch/sh/include/asm/atomic-grb.h                   |  43 +--
 arch/sh/include/asm/atomic-irq.h                   |  21 +-
 arch/sh/include/asm/atomic-llsc.h                  |  31 +-
 arch/sparc/include/asm/atomic_32.h                 |   4 +-
 arch/sparc/include/asm/atomic_64.h                 |   4 +
 arch/sparc/include/asm/barrier_64.h                |   4 +-
 arch/sparc/include/asm/jump_label.h                |  35 +-
 arch/sparc/kernel/jump_label.c                     |   2 +-
 arch/sparc/lib/atomic32.c                          |  22 +-
 arch/sparc/lib/atomic_64.S                         |   6 +
 arch/sparc/lib/ksyms.c                             |   3 +
 arch/tile/include/asm/atomic_32.h                  |  28 ++
 arch/tile/include/asm/atomic_64.h                  |  40 ++
 arch/tile/lib/atomic_32.c                          |  23 ++
 arch/tile/lib/atomic_asm_32.S                      |   4 +
 arch/x86/include/asm/atomic.h                      |  25 +-
 arch/x86/include/asm/atomic64_32.h                 |  14 +
 arch/x86/include/asm/atomic64_64.h                 |  15 +
 arch/x86/include/asm/barrier.h                     |   8 +-
 arch/x86/include/asm/jump_label.h                  |  23 +-
 arch/x86/include/asm/qrwlock.h                     |  10 -
 arch/x86/kernel/jump_label.c                       |   2 +-
 arch/x86/kernel/tsc.c                              |  22 +-
 arch/xtensa/configs/iss_defconfig                  |   1 -
 arch/xtensa/include/asm/atomic.h                   |  73 +---
 drivers/gpu/drm/i915/i915_drv.c                    |   2 +-
 drivers/gpu/drm/i915/i915_gem.c                    |   2 +-
 drivers/gpu/drm/i915/i915_irq.c                    |   4 +-
 drivers/s390/scsi/zfcp_aux.c                       |   2 +-
 drivers/s390/scsi/zfcp_erp.c                       |  62 +--
 drivers/s390/scsi/zfcp_fc.c                        |   8 +-
 drivers/s390/scsi/zfcp_fsf.c                       |  26 +-
 drivers/s390/scsi/zfcp_qdio.c                      |  14 +-
 include/asm-generic/atomic-long.h                  | 263 +++++--------
 include/asm-generic/atomic.h                       |  11 +-
 include/asm-generic/atomic64.h                     |   4 +
 include/asm-generic/barrier.h                      |   4 +-
 include/asm-generic/qrwlock.h                      |  78 ++--
 include/linux/atomic.h                             | 361 +++++++++++++++++-
 include/linux/compiler.h                           |   7 +-
 include/linux/jump_label.h                         | 261 ++++++++++---
 include/linux/llist.h                              |   2 +-
 kernel/futex.c                                     | 100 ++++-
 kernel/jump_label.c                                | 158 +++++---
 kernel/locking/Makefile                            |   1 -
 kernel/locking/qrwlock.c                           |  47 ++-
 kernel/locking/qspinlock.c                         |   6 +-
 kernel/locking/qspinlock_paravirt.h                | 102 +++--
 kernel/locking/rtmutex-tester.c                    | 420 ---------------------
 kernel/locking/rtmutex.c                           |   2 +-
 kernel/locking/rtmutex_common.h                    |  22 --
 kernel/sched/core.c                                |   6 +-
 lib/Kconfig.debug                                  |  22 +-
 lib/Makefile                                       |   2 +
 lib/atomic64.c                                     |   3 +
 lib/atomic64_test.c                                |  68 ++--
 lib/lockref.c                                      |   8 -
 lib/test_static_key_base.c                         |  68 ++++
 lib/test_static_keys.c                             | 225 +++++++++++
 scripts/rt-tester/check-all.sh                     |  21 --
 scripts/rt-tester/rt-tester.py                     | 218 -----------
 scripts/rt-tester/t2-l1-2rt-sameprio.tst           |  94 -----
 scripts/rt-tester/t2-l1-pi.tst                     |  77 ----
 scripts/rt-tester/t2-l1-signal.tst                 |  72 ----
 scripts/rt-tester/t2-l2-2rt-deadlock.tst           |  84 -----
 scripts/rt-tester/t3-l1-pi-1rt.tst                 |  87 -----
 scripts/rt-tester/t3-l1-pi-2rt.tst                 |  88 -----
 scripts/rt-tester/t3-l1-pi-3rt.tst                 |  87 -----
 scripts/rt-tester/t3-l1-pi-signal.tst              |  93 -----
 scripts/rt-tester/t3-l1-pi-steal.tst               |  91 -----
 scripts/rt-tester/t3-l2-pi.tst                     |  87 -----
 scripts/rt-tester/t4-l2-pi-deboost.tst             | 118 ------
 .../rt-tester/t5-l4-pi-boost-deboost-setsched.tst  | 178 ---------
 scripts/rt-tester/t5-l4-pi-boost-deboost.tst       | 138 -------
 tools/testing/selftests/Makefile                   |   1 +
 tools/testing/selftests/static_keys/Makefile       |   8 +
 .../selftests/static_keys/test_static_keys.sh      |  16 +
 139 files changed, 2425 insertions(+), 3585 deletions(-)
--
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