From: Linus Torvalds Date: Wed, 28 Apr 2021 19:37:53 +0000 (-0700) Subject: Merge tag 'locking-core-2021-04-28' of git://git.kernel.org/pub/scm/linux/kernel... X-Git-Tag: accepted/tizen/unified/20230118.172025~7362 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0ff0edb550e256597e505eff308f90d9a0b6677c;p=platform%2Fkernel%2Flinux-rpi.git Merge tag 'locking-core-2021-04-28' of git://git./linux/kernel/git/tip/tip Pull locking updates from Ingo Molnar: - rtmutex cleanup & spring cleaning pass that removes ~400 lines of code - Futex simplifications & cleanups - Add debugging to the CSD code, to help track down a tenacious race (or hw problem) - Add lockdep_assert_not_held(), to allow code to require a lock to not be held, and propagate this into the ath10k driver - Misc LKMM documentation updates - Misc KCSAN updates: cleanups & documentation updates - Misc fixes and cleanups - Fix locktorture bugs with ww_mutexes * tag 'locking-core-2021-04-28' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (44 commits) kcsan: Fix printk format string static_call: Relax static_call_update() function argument type static_call: Fix unused variable warn w/o MODULE locking/rtmutex: Clean up signal handling in __rt_mutex_slowlock() locking/rtmutex: Restrict the trylock WARN_ON() to debug locking/rtmutex: Fix misleading comment in rt_mutex_postunlock() locking/rtmutex: Consolidate the fast/slowpath invocation locking/rtmutex: Make text section and inlining consistent locking/rtmutex: Move debug functions as inlines into common header locking/rtmutex: Decrapify __rt_mutex_init() locking/rtmutex: Remove pointless CONFIG_RT_MUTEXES=n stubs locking/rtmutex: Inline chainwalk depth check locking/rtmutex: Move rt_mutex_debug_task_free() to rtmutex.c locking/rtmutex: Remove empty and unused debug stubs locking/rtmutex: Consolidate rt_mutex_init() locking/rtmutex: Remove output from deadlock detector locking/rtmutex: Remove rtmutex deadlock tester leftovers locking/rtmutex: Remove rt_mutex_timed_lock() MAINTAINERS: Add myself as futex reviewer locking/mutex: Remove repeated declaration ... --- 0ff0edb550e256597e505eff308f90d9a0b6677c diff --cc arch/x86/include/asm/jump_label.h index 5ce342b,7f20066..610a053 --- a/arch/x86/include/asm/jump_label.h +++ b/arch/x86/include/asm/jump_label.h @@@ -14,10 -20,10 +14,10 @@@ #include #include - static __always_inline bool arch_static_branch(struct static_key *key, bool branch) + static __always_inline bool arch_static_branch(struct static_key * const key, const bool branch) { asm_volatile_goto("1:" - ".byte " __stringify(STATIC_KEY_INIT_NOP) "\n\t" + ".byte " __stringify(BYTES_NOP5) "\n\t" ".pushsection __jump_table, \"aw\" \n\t" _ASM_ALIGN "\n\t" ".long 1b - ., %l[l_yes] - . \n\t" diff --cc include/linux/lockdep.h index 1c74613,09ac2e8..5cf38781 --- a/include/linux/lockdep.h +++ b/include/linux/lockdep.h @@@ -397,10 -404,10 +408,11 @@@ extern int lockdep_is_held(const void * #define lockdep_is_held_type(l, r) (1) #define lockdep_assert_held(l) do { (void)(l); } while (0) - #define lockdep_assert_held_write(l) do { (void)(l); } while (0) + #define lockdep_assert_not_held(l) do { (void)(l); } while (0) + #define lockdep_assert_held_write(l) do { (void)(l); } while (0) #define lockdep_assert_held_read(l) do { (void)(l); } while (0) #define lockdep_assert_held_once(l) do { (void)(l); } while (0) +#define lockdep_assert_none_held_once() do { } while (0) #define lockdep_recursing(tsk) (0) diff --cc include/linux/static_call.h index e01b61a,8d50f62..fc94faa --- a/include/linux/static_call.h +++ b/include/linux/static_call.h @@@ -118,13 -113,11 +118,13 @@@ extern void arch_static_call_transform( #define static_call_update(name, func) \ ({ \ - BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \ + typeof(&STATIC_CALL_TRAMP(name)) __F = (func); \ __static_call_update(&STATIC_CALL_KEY(name), \ - STATIC_CALL_TRAMP_ADDR(name), func); \ + STATIC_CALL_TRAMP_ADDR(name), __F); \ }) +#define static_call_query(name) (READ_ONCE(STATIC_CALL_KEY(name).func)) + #ifdef CONFIG_HAVE_STATIC_CALL_INLINE extern int __init static_call_init(void);