From a1580311c36ca28344b2f03b3c8a72d9f8db5bde Mon Sep 17 00:00:00 2001 From: heshuai1 Date: Fri, 7 May 2021 19:40:52 +0800 Subject: [PATCH] ANDROID: freezer: Add vendor hook to freezer for GKI purpose. Add the vendor hook to freezer.c, because of some special cases related to our feature, we do not want the process to be frozen immediately, so we add the hook at __refrigerator to make sure we can go to our own freeze logic when the process is about to be frozen. Bug: 187458531 Signed-off-by: heshuai1 Change-Id: Iea42fd9604d6b33ccd6502425416f0dd28eecebb --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/cgroup.h | 3 +++ kernel/freezer.c | 4 ++++ 3 files changed, 8 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 87025ea52616..a22dae57cfe2 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -68,6 +68,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_select_task_rq_fair); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_select_task_rq_rt); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_select_fallback_rq); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_refrigerator); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_scheduler_tick); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_enqueue_task); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_dequeue_task); diff --git a/include/trace/hooks/cgroup.h b/include/trace/hooks/cgroup.h index ca9f7020a27c..6b6d7918c518 100644 --- a/include/trace/hooks/cgroup.h +++ b/include/trace/hooks/cgroup.h @@ -18,6 +18,9 @@ DECLARE_RESTRICTED_HOOK(android_rvh_cpuset_fork, DECLARE_RESTRICTED_HOOK(android_rvh_cgroup_force_kthread_migration, TP_PROTO(struct task_struct *tsk, struct cgroup *dst_cgrp, bool *force_migration), TP_ARGS(tsk, dst_cgrp, force_migration), 1); +DECLARE_RESTRICTED_HOOK(android_rvh_refrigerator, + TP_PROTO(bool f), + TP_ARGS(f), 1); struct cgroup_subsys; struct cgroup_taskset; diff --git a/kernel/freezer.c b/kernel/freezer.c index 8f3d950c2a87..203bf9c21d3d 100644 --- a/kernel/freezer.c +++ b/kernel/freezer.c @@ -13,6 +13,9 @@ #include #include +#undef CREATE_TRACE_POINT +#include + /* total number of freezing conditions in effect */ atomic_t system_freezing_cnt = ATOMIC_INIT(0); EXPORT_SYMBOL(system_freezing_cnt); @@ -71,6 +74,7 @@ bool __refrigerator(bool check_kthr_stop) if (!freezing(current) || (check_kthr_stop && kthread_should_stop())) current->flags &= ~PF_FROZEN; + trace_android_rvh_refrigerator(pm_nosig_freezing); spin_unlock_irq(&freezer_lock); if (!(current->flags & PF_FROZEN))