linux-yocto/kernel/locking
John Stultz 0c54a73f29 locking/rwsem: Add __always_inline annotation to __down_write_common() and inlined callers
[ Upstream commit e81859fe64 ]

Apparently despite it being marked inline, the compiler
may not inline __down_write_common() which makes it difficult
to identify the cause of lock contention, as the wchan of the
blocked function will always be listed as __down_write_common().

So add __always_inline annotation to the common function (as
well as the inlined helper callers) to force it to be inlined
so a more useful blocking function will be listed (via wchan).

This mirrors commit 92cc5d00a4 ("locking/rwsem: Add
__always_inline annotation to __down_read_common() and inlined
callers") which did the same for __down_read_common.

I sort of worry that I'm playing wack-a-mole here, and talking
with compiler people, they tell me inline means nothing, which
makes me want to cry a little. So I'm wondering if we need to
replace all the inlines with __always_inline, or remove them
because either we mean something by it, or not.

Fixes: c995e638cc ("locking/rwsem: Fold __down_{read,write}*()")
Reported-by: Tim Murray <timmurray@google.com>
Signed-off-by: John Stultz <jstultz@google.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Waiman Long <longman@redhat.com>
Link: https://lkml.kernel.org/r/20240709060831.495366-1-jstultz@google.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-08-19 05:44:59 +02:00
..
irqflag-debug.c
lock_events_list.h
lock_events.c
lock_events.h
lockdep_internals.h locking/lockdep: Iterate lock_classes directly when reading lockdep files 2022-04-08 14:23:57 +02:00
lockdep_proc.c locking/lockdep: Iterate lock_classes directly when reading lockdep files 2022-04-08 14:23:57 +02:00
lockdep_states.h
lockdep.c lockdep: Fix block chain corruption 2023-12-03 07:31:23 +01:00
locktorture.c
Makefile
mcs_spinlock.h
mutex-debug.c locking/mutex: Introduce devm_mutex_init() 2024-07-18 13:07:26 +02:00
mutex.c
mutex.h
osq_lock.c
percpu-rwsem.c
qrwlock.c
qspinlock_paravirt.h
qspinlock_stat.h
qspinlock.c
rtmutex_api.c locking/rtmutex: Fix task->pi_waiters integrity 2023-08-03 10:22:45 +02:00
rtmutex_common.h locking/rtmutex: Fix task->pi_waiters integrity 2023-08-03 10:22:45 +02:00
rtmutex.c locking/rtmutex: Fix task->pi_waiters integrity 2023-08-03 10:22:45 +02:00
rwbase_rt.c
rwsem.c locking/rwsem: Add __always_inline annotation to __down_write_common() and inlined callers 2024-08-19 05:44:59 +02:00
semaphore.c
spinlock_debug.c
spinlock_rt.c
spinlock.c
test-ww_mutex.c locking/ww_mutex/test: Fix potential workqueue corruption 2023-11-28 16:56:15 +00:00
ww_mutex.h locking/rtmutex: Fix task->pi_waiters integrity 2023-08-03 10:22:45 +02:00
ww_rt_mutex.c