Messages in this thread | | | Date | Mon, 30 Mar 2020 17:18:40 +0200 | From | Ingo Molnar <> | Subject | [GIT PULL] locking changes for v5.7 |
| |
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: f1e67e355c2aafeddf1eac31335709236996d2fe fs/buffer: Make BH_Uptodate_Lock bit_spin_lock a regular spinlock_t
The main changes in this cycle were:
- Continued user-access cleanups in the futex code.
- percpu-rwsem rewrite that uses its own waitqueue and atomic_t instead of an embedded rwsem. This addresses a couple of weaknesses, but the primary motivation was complications on the -rt kernel.
- Introduce raw lock nesting detection on lockdep (CONFIG_PROVE_RAW_LOCK_NESTING=y), document the raw_lock vs. normal lock differences. This too originates from -rt.
- Reuse lockdep zapped chain_hlocks entries, to conserve RAM footprint on distro-ish kernels running into the "BUG: MAX_LOCKDEP_CHAIN_HLOCKS too low!" depletion of the lockdep chain-entries pool.
- Misc cleanups, smaller fixes and enhancements - see the changelog for details.
Thanks,
Ingo
------------------> Al Viro (8): futex: arch_futex_atomic_op_inuser() calling conventions change sh: no need of access_ok() in arch_futex_atomic_op_inuser() [parisc, s390, sparc64] no need for access_ok() in futex handling objtool: whitelist __sanitizer_cov_trace_switch() x86: convert arch_futex_atomic_op_inuser() to user_access_begin/user_access_end() x86: don't reload after cmpxchg in unsafe_atomic_op2() loop generic arch_futex_atomic_op_inuser() doesn't need access_ok() x86: get rid of user_atomic_cmpxchg_inatomic()
Boqun Feng (1): locking/lockdep: Avoid recursion in lockdep_count_{for,back}ward_deps()
Clark Williams (1): thermal/x86_pkg_temp: Make pkg_temp_lock a raw_spinlock_t
Davidlohr Bueso (2): locking/percpu-rwsem: Fold __percpu_up_read() locking/percpu-rwsem: Add might_sleep() for writer locking
Logan Gunthorpe (1): PCI/switchtec: Fix init_completion race condition with poll_wait()
Peter Zijlstra (13): locking/percpu-rwsem, lockdep: Make percpu-rwsem use its own lockdep_map locking/percpu-rwsem: Convert to bool locking/percpu-rwsem: Move __this_cpu_inc() into the slowpath locking/percpu-rwsem: Extract __percpu_down_read_trylock() locking/percpu-rwsem: Remove the embedded rwsem locking/rwsem: Remove RWSEM_OWNER_UNKNOWN futex: Remove pointless mmgrap() + mmdrop() futex: Remove {get,drop}_futex_key_refs() locking/lockdep: Fix bad recursion pattern locking/lockdep: Rework lockdep_lock lockdep: Teach lockdep about "USED" <- "IN-NMI" inversions acpi: Remove header dependency lockdep: Introduce wait-type checks
Peter Zijlstra (Intel) (2): rcuwait: Add @state argument to rcuwait_wait_event() powerpc/ps3: Convert half completion to rcuwait
Randy Dunlap (1): Documentation/locking/locktypes: Minor copy editor fixes
Sebastian Andrzej Siewior (9): pci/switchtec: Replace completion wait queue usage for poll nds32: Remove mm.h from asm/uaccess.h csky: Remove mm.h from asm/uaccess.h hexagon: Remove mm.h from asm/uaccess.h ia64: Remove mm.h from asm/uaccess.h microblaze: Remove mm.h from asm/uaccess.h lockdep: Add hrtimer context tracing bits lockdep: Annotate irq_work lockdep: Add posixtimer context tracing bits
Sebastian Siewior (1): completion: Use lockdep_assert_RT_in_threaded_ctx() in complete_all()
Thomas Gleixner (9): usb: gadget: Use completion interface instead of open coding it orinoco_usb: Use the regular completion interfaces Documentation: Add lock ordering and nesting documentation timekeeping: Split jiffies seqlock sched/swait: Prepare usage in completions completion: Use simple wait queues m68knommu: Remove mm.h include from uaccess_no.h Documentation/locking/locktypes: Further clarifications and wordsmithing fs/buffer: Make BH_Uptodate_Lock bit_spin_lock a regular spinlock_t
Waiman Long (6): locking/lockdep: Decrement IRQ context counters when removing lock chain locking/lockdep: Display irq_context names in /proc/lockdep_chains locking/lockdep: Track number of zapped classes locking/lockdep: Throw away all lock chains with zapped class locking/lockdep: Track number of zapped lock chains locking/lockdep: Reuse freed chain_hlocks entries
Will Deacon (1): asm-generic/bitops: Update stale comment
Documentation/locking/index.rst | 1 + Documentation/locking/locktypes.rst | 347 +++++++++++ arch/alpha/include/asm/futex.h | 5 +- arch/arc/include/asm/futex.h | 5 +- arch/arm/include/asm/futex.h | 5 +- arch/arm64/include/asm/futex.h | 5 +- arch/csky/include/asm/uaccess.h | 1 - arch/hexagon/include/asm/futex.h | 5 +- arch/hexagon/include/asm/uaccess.h | 1 - arch/ia64/include/asm/futex.h | 5 +- arch/ia64/include/asm/uaccess.h | 1 - arch/ia64/kernel/process.c | 1 + arch/ia64/mm/ioremap.c | 1 + arch/m68k/include/asm/uaccess_no.h | 1 - arch/microblaze/include/asm/futex.h | 5 +- arch/microblaze/include/asm/uaccess.h | 1 - arch/mips/include/asm/futex.h | 5 +- arch/nds32/include/asm/futex.h | 6 +- arch/nds32/include/asm/uaccess.h | 1 - arch/openrisc/include/asm/futex.h | 5 +- arch/parisc/include/asm/futex.h | 2 - arch/powerpc/include/asm/futex.h | 5 +- arch/powerpc/platforms/ps3/device-init.c | 18 +- arch/riscv/include/asm/futex.h | 5 +- arch/s390/include/asm/futex.h | 2 - arch/sh/include/asm/futex.h | 4 - arch/sparc/include/asm/futex_64.h | 4 - arch/x86/include/asm/futex.h | 99 +-- arch/x86/include/asm/uaccess.h | 93 --- arch/xtensa/include/asm/futex.h | 5 +- .../net/wireless/intersil/orinoco/orinoco_usb.c | 21 +- drivers/pci/switch/switchtec.c | 22 +- drivers/platform/x86/dell-smo8800.c | 1 + drivers/platform/x86/wmi.c | 1 + .../intel/int340x_thermal/acpi_thermal_rel.c | 1 + drivers/thermal/intel/x86_pkg_temp_thermal.c | 24 +- drivers/usb/gadget/function/f_fs.c | 2 +- drivers/usb/gadget/legacy/inode.c | 4 +- fs/buffer.c | 19 +- fs/ext4/page-io.c | 8 +- fs/ntfs/aops.c | 9 +- include/acpi/acpi_bus.h | 2 +- include/asm-generic/bitops.h | 5 +- include/asm-generic/futex.h | 2 - include/linux/buffer_head.h | 6 +- include/linux/completion.h | 8 +- include/linux/irq_work.h | 2 + include/linux/irqflags.h | 48 +- include/linux/lockdep.h | 86 ++- include/linux/mutex.h | 7 +- include/linux/percpu-rwsem.h | 83 +-- include/linux/rcuwait.h | 12 +- include/linux/rwlock_types.h | 6 +- include/linux/rwsem.h | 12 +- include/linux/sched.h | 2 + include/linux/spinlock.h | 35 +- include/linux/spinlock_types.h | 24 +- include/linux/wait.h | 1 + kernel/cpu.c | 4 +- kernel/exit.c | 1 + kernel/futex.c | 107 +--- kernel/irq/handle.c | 7 + kernel/irq_work.c | 2 + kernel/locking/lockdep.c | 674 +++++++++++++++++---- kernel/locking/lockdep_internals.h | 14 +- kernel/locking/lockdep_proc.c | 31 +- kernel/locking/mutex-debug.c | 2 +- kernel/locking/percpu-rwsem.c | 194 ++++-- kernel/locking/rwsem.c | 9 +- kernel/locking/rwsem.h | 10 - kernel/locking/spinlock_debug.c | 6 +- kernel/rcu/tree.c | 1 + kernel/rcu/update.c | 24 +- kernel/sched/completion.c | 36 +- kernel/sched/sched.h | 3 + kernel/sched/swait.c | 15 +- kernel/time/hrtimer.c | 6 +- kernel/time/jiffies.c | 7 +- kernel/time/posix-cpu-timers.c | 6 +- kernel/time/tick-common.c | 10 +- kernel/time/tick-sched.c | 20 +- kernel/time/timekeeping.c | 6 +- kernel/time/timekeeping.h | 3 +- lib/Kconfig.debug | 17 + tools/objtool/check.c | 1 + 85 files changed, 1611 insertions(+), 702 deletions(-) create mode 100644 Documentation/locking/locktypes.rst
| |