summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCiunas Bennett <ciunas@linux.ibm.com>2026-07-23 10:42:29 +0200
committerVasily Gorbik <gor@linux.ibm.com>2026-07-30 00:29:09 +0200
commitffa796cc1f45903b55801d5bd437060ea012a12d (patch)
treee319e07716ecd83b7f001e557bb8784b13618c06
parentbc5d0909eef4effa9ed4136b42e5650f96856f16 (diff)
downloadlinux-next-ffa796cc1f45903b55801d5bd437060ea012a12d.tar.gz
linux-next-ffa796cc1f45903b55801d5bd437060ea012a12d.zip
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>
-rw-r--r--arch/s390/lib/spinlock.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/s390/lib/spinlock.c b/arch/s390/lib/spinlock.c
index 10db1e56a811..dbabca35c008 100644
--- a/arch/s390/lib/spinlock.c
+++ b/arch/s390/lib/spinlock.c
@@ -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);