s390/spinlock: Add contention tracepoints to lock slowpath

Instrument arch_spin_lock_wait() with trace_contention_begin() and
trace_contention_end().

These tracepoints are used by lock contention analysis tools such as
perf lock contention to identify contended locks and measure wait times.
Both the generic implementation and powerpc emit the same events from
their spinlock slow path.

Place the tracepoints in arch_spin_lock_wait(), which is only entered
when lock acquisition falls back to the contention path.

Acked-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Ciunas Bennett <ciunas@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
Ciunas Bennett
2026-07-23 10:42:29 +02:00
committed by Vasily Gorbik
parent bc5d0909ee
commit ffa796cc1f

View File

@@ -18,6 +18,7 @@
#include <asm/alternative.h>
#include <asm/machine.h>
#include <asm/asm.h>
#include <trace/events/lock.h>
int spin_retry = -1;
@@ -281,10 +282,12 @@ static inline void arch_spin_lock_classic(arch_spinlock_t *lp)
void arch_spin_lock_wait(arch_spinlock_t *lp)
{
trace_contention_begin(lp, LCB_F_SPIN);
if (test_cpu_flag(CIF_DEDICATED_CPU))
arch_spin_lock_queued(lp);
else
arch_spin_lock_classic(lp);
trace_contention_end(lp, 0);
}
EXPORT_SYMBOL(arch_spin_lock_wait);