diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 6ea36ef85a4b..bb6d5eb7a31f 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -202,6 +202,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_balance_rt); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_timer_calc_index); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_watchdog_timer_softlockup); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_try_to_freeze_todo); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_try_to_freeze_todo_logging); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_try_to_freeze_todo_unfrozen); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_dequeue_task_idle); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_die_kernel_fault); diff --git a/include/trace/hooks/power.h b/include/trace/hooks/power.h index aab4b37b2d6a..3c735b7a5abd 100644 --- a/include/trace/hooks/power.h +++ b/include/trace/hooks/power.h @@ -25,6 +25,10 @@ DECLARE_HOOK(android_vh_try_to_freeze_todo, TP_PROTO(unsigned int todo, unsigned int elapsed_msecs, bool wq_busy), TP_ARGS(todo, elapsed_msecs, wq_busy)); +DECLARE_HOOK(android_vh_try_to_freeze_todo_logging, + TP_PROTO(bool *logging_on), + TP_ARGS(logging_on)); + DECLARE_HOOK(android_vh_try_to_freeze_todo_unfrozen, TP_PROTO(struct task_struct *p), TP_ARGS(p)); diff --git a/kernel/power/process.c b/kernel/power/process.c index ba51823759ea..7564fd30766b 100644 --- a/kernel/power/process.c +++ b/kernel/power/process.c @@ -40,6 +40,7 @@ static int try_to_freeze_tasks(bool user_only) unsigned int elapsed_msecs; bool wakeup = false; int sleep_usecs = USEC_PER_MSEC; + bool todo_logging_on = false; start = ktime_get_boottime(); @@ -101,7 +102,8 @@ static int try_to_freeze_tasks(bool user_only) if (wq_busy) show_workqueue_state(); - if (pm_debug_messages_on) { + trace_android_vh_try_to_freeze_todo_logging(&todo_logging_on); + if (pm_debug_messages_on || todo_logging_on) { read_lock(&tasklist_lock); for_each_process_thread(g, p) { if (p != current && !freezer_should_skip(p)