From e80c937cd08d9ffe97d07be29e8fb8cd5f6c12b3 Mon Sep 17 00:00:00 2001 From: Liujie Xie Date: Tue, 14 Jun 2022 17:47:19 +0800 Subject: [PATCH] ANDROID: vendor_hooks: Add hooks for rwsem and mutex Add hooks to apply oem's optimization of rwsem and mutex Bug: 182237112 Signed-off-by: xieliujie (cherry picked from commit 80b4341d0520dce2ef1e33aef06c6a2bc8ada518) Signed-off-by: xieliujie Change-Id: I36895c432e5b6d6bff8781b4a7872badb693284c Signed-off-by: Carlos Llamas [cmllamas: completes the cherry-pick of original commit 80b4341d0520 since commit 0902cc73b793 was only partial] (cherry picked from commit d4528a28cb5be0c322031f333a6230fa3042931f) --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/rwsem.h | 3 +++ kernel/locking/rwsem.c | 1 + 3 files changed, 5 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 2ab6790cc336..49e7058ec32f 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -203,3 +203,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_gfp_zone_flags); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_readahead_gfp_mask); 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_rwsem_wake_finish); diff --git a/include/trace/hooks/rwsem.h b/include/trace/hooks/rwsem.h index 71215dfd5eff..a2fb006cd457 100644 --- a/include/trace/hooks/rwsem.h +++ b/include/trace/hooks/rwsem.h @@ -25,6 +25,9 @@ DECLARE_HOOK(android_vh_alter_rwsem_list_add, struct rw_semaphore *sem, bool *already_on_list), TP_ARGS(waiter, sem, already_on_list)); +DECLARE_HOOK(android_vh_rwsem_wake_finish, + TP_PROTO(struct rw_semaphore *sem), + TP_ARGS(sem)); #endif /* _TRACE_HOOK_RWSEM_H */ /* This part must be outside protection */ #include diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c index bcf8160bb6ac..a6bdfdb2bc7d 100644 --- a/kernel/locking/rwsem.c +++ b/kernel/locking/rwsem.c @@ -1259,6 +1259,7 @@ static struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem) if (!list_empty(&sem->wait_list)) rwsem_mark_wake(sem, RWSEM_WAKE_ANY, &wake_q); + trace_android_vh_rwsem_wake_finish(sem); raw_spin_unlock_irqrestore(&sem->wait_lock, flags); wake_up_q(&wake_q);