Commit a94d3244 authored by Waiman Long's avatar Waiman Long Committed by Ingo Molnar
Browse files

locking/lock_events: Add locking events for lockdep



Add some lock events to lockdep to profile its behavior.

Signed-off-by: default avatarWaiman Long <longman@redhat.com>
Signed-off-by: default avatarBoqun Feng <boqun.feng@gmail.com>
Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20250307232717.1759087-5-boqun.feng@gmail.com
parent b76b44fb
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -88,3 +88,10 @@ LOCK_EVENT(rtmutex_slow_acq3) /* # of locks acquired in *block() */
LOCK_EVENT(rtmutex_slow_sleep)	/* # of sleeps				*/
LOCK_EVENT(rtmutex_slow_wake)	/* # of wakeup's			*/
LOCK_EVENT(rtmutex_deadlock)	/* # of rt_mutex_handle_deadlock()'s	*/

/*
 * Locking events for lockdep
 */
LOCK_EVENT(lockdep_acquire)
LOCK_EVENT(lockdep_lock)
LOCK_EVENT(lockdep_nocheck)
+7 −1
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@
#include <asm/sections.h>

#include "lockdep_internals.h"
#include "lock_events.h"

#include <trace/events/lock.h>

@@ -170,6 +171,7 @@ static struct task_struct *lockdep_selftest_task_struct;
static int graph_lock(void)
{
	lockdep_lock();
	lockevent_inc(lockdep_lock);
	/*
	 * Make sure that if another CPU detected a bug while
	 * walking the graph we dont change it (while the other
@@ -5091,8 +5093,12 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass,
	if (unlikely(lock->key == &__lockdep_no_track__))
		return 0;

	if (!prove_locking || lock->key == &__lockdep_no_validate__)
	lockevent_inc(lockdep_acquire);

	if (!prove_locking || lock->key == &__lockdep_no_validate__) {
		check = 0;
		lockevent_inc(lockdep_nocheck);
	}

	if (subclass < NR_LOCKDEP_CACHING_CLASSES)
		class = lock->class_cache[subclass];