From 8c3ac02bcaf8c2167ad5acd18e6a3c23de361763 Mon Sep 17 00:00:00 2001 From: Liujie Xie Date: Fri, 20 May 2022 10:57:27 +0800 Subject: [PATCH] ANDROID: vendor_hooks: Add hooks for mutex Due to the existence of optimistic spin, we need to sense whether the owner of the lock has changed in the loop, so as to do priority inheritance on the owner more accurately, trace_android_vh_mutex_wait_start does not meet our needs. Bug: 231647361 Change-Id: Iab2832fd3c352d8c1229348a5e7befced70ee92e Signed-off-by: Liujie Xie --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/dtask.h | 3 +++ kernel/locking/mutex.c | 1 + 3 files changed, 5 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 1ca42b0dfd4d..271df56a34ed 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -243,6 +243,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_build_sched_domains); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_mutex_list_add); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_unlock_slowpath); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_unlock_slowpath_end); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_start_check_new_owner); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_wake_finish); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_undefinstr); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_ptrauth_fault); diff --git a/include/trace/hooks/dtask.h b/include/trace/hooks/dtask.h index 675634238fbd..7053563e2e8f 100644 --- a/include/trace/hooks/dtask.h +++ b/include/trace/hooks/dtask.h @@ -57,6 +57,9 @@ DECLARE_HOOK(android_vh_mutex_unlock_slowpath, DECLARE_HOOK(android_vh_mutex_unlock_slowpath_end, TP_PROTO(struct mutex *lock, struct task_struct *next), TP_ARGS(lock, next)); +DECLARE_HOOK(android_vh_mutex_start_check_new_owner, + TP_PROTO(struct mutex *lock), + TP_ARGS(lock)); /* macro versions of hooks are no longer required */ diff --git a/kernel/locking/mutex.c b/kernel/locking/mutex.c index fac88b1e134e..6d4f413264d2 100644 --- a/kernel/locking/mutex.c +++ b/kernel/locking/mutex.c @@ -1049,6 +1049,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass, goto err; } + trace_android_vh_mutex_start_check_new_owner(lock); spin_unlock(&lock->wait_lock); schedule_preempt_disabled();