mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 14:04:27 -04:00
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:
committed by
Vasily Gorbik
parent
bc5d0909ee
commit
ffa796cc1f
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user