summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2023-02-05 16:18:59 -0500
committerKent Overstreet <kent.overstreet@linux.dev>2023-02-05 18:15:36 -0500
commit75e5ce72679bbd207351313c2b6bd758eb394952 (patch)
treef45d04c398709bd5fed4f066376d933304b481ff
parente8d3eed1efa28366ab305aa56b7e5dcd2cb0e8db (diff)
six locks: Lock contended tracepoints
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r--kernel/locking/six.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/locking/six.c b/kernel/locking/six.c
index 0614b9158570..41337a7faeb9 100644
--- a/kernel/locking/six.c
+++ b/kernel/locking/six.c
@@ -11,6 +11,8 @@
#include <linux/six.h>
#include <linux/slab.h>
+#include <trace/events/lock.h>
+
#ifdef DEBUG
#define EBUG_ON(cond) BUG_ON(cond)
#else
@@ -498,11 +500,12 @@ static int __six_lock_type_slowpath(struct six_lock *lock, enum six_lock_type ty
smp_mb__after_atomic();
}
+ trace_contention_begin(lock, 0);
+ lock_contended(&lock->dep_map, ip);
+
if (six_optimistic_spin(lock, type))
goto out;
- lock_contended(&lock->dep_map, ip);
-
wait->task = current;
wait->lock_want = type;
wait->lock_acquired = false;
@@ -569,6 +572,7 @@ out:
&lock->state.counter);
six_lock_wakeup(lock, old, SIX_LOCK_read);
}
+ trace_contention_end(lock, 0);
return ret;
}