]> git.hungrycats.org Git - linux/commit
locking: Add contended_release tracepoint to sleepable locks
authorDmitry Ilvokhin <d@ilvokhin.com>
Thu, 4 Jun 2026 07:15:07 +0000 (07:15 +0000)
committerPeter Zijlstra <peterz@infradead.org>
Thu, 11 Jun 2026 11:41:25 +0000 (13:41 +0200)
commit4f070ccb4dc4692e3b6757819fb80655f58b4f12
tree78782665697a6acfbdf8cbacce7e903a0668b321
parent7cfa62cf9432df67b1c95a59984a03a3bc023f98
locking: Add contended_release tracepoint to sleepable locks

Add the contended_release trace event. This tracepoint fires on the
holder side when a contended lock is released, complementing the
existing contention_begin/contention_end tracepoints which fire on the
waiter side.

This enables correlating lock hold time under contention with waiter
events by lock address.

Add trace_contended_release()/trace_call__contended_release() calls to
the slowpath unlock paths of sleepable locks: mutex, rtmutex, semaphore,
rwsem, percpu-rwsem, and RT-specific rwbase locks.

Where possible, trace_contended_release() fires before the lock is
released and before the waiter is woken. For some lock types, the
tracepoint fires after the release but before the wake. Making the
placement consistent across all lock types is not worth the added
complexity.

For reader/writer locks, the tracepoint fires for every reader releasing
while a writer is waiting, not only for the last reader.

Signed-off-by: Dmitry Ilvokhin <d@ilvokhin.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Paul E. McKenney <paulmck@kernel.org>
Acked-by: Usama Arif <usama.arif@linux.dev>
Link: https://patch.msgid.link/02f4f6c5ce6761e7f6587cf0ff2289d962ecddd4.1780506267.git.d@ilvokhin.com
include/trace/events/lock.h
kernel/locking/mutex.c
kernel/locking/percpu-rwsem.c
kernel/locking/rtmutex.c
kernel/locking/rwbase_rt.c
kernel/locking/rwsem.c
kernel/locking/semaphore.c