diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index aa21aa87ef67..2cff702df817 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -321,6 +321,9 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_force_compatible_pre); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_force_compatible_post); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_uid); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_user); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freq_qos_add_request); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freq_qos_update_request); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freq_qos_remove_request); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_balance_anon_file_reclaim); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpuidle_psci_enter); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpuidle_psci_exit); diff --git a/include/trace/hooks/power.h b/include/trace/hooks/power.h index 049c8995932d..149ea08580b8 100644 --- a/include/trace/hooks/power.h +++ b/include/trace/hooks/power.h @@ -20,6 +20,23 @@ DECLARE_HOOK(android_vh_try_to_freeze_todo_unfrozen, TP_PROTO(struct task_struct *p), TP_ARGS(p)); +enum freq_qos_req_type; +struct freq_qos_request; +struct freq_constraints; + +DECLARE_HOOK(android_vh_freq_qos_add_request, + TP_PROTO(struct freq_constraints *qos, struct freq_qos_request *req, + enum freq_qos_req_type type, int value, int ret), + TP_ARGS(qos, req, type, value, ret)); + +DECLARE_HOOK(android_vh_freq_qos_update_request, + TP_PROTO(struct freq_qos_request *req, int value), + TP_ARGS(req, value)); + +DECLARE_HOOK(android_vh_freq_qos_remove_request, + TP_PROTO(struct freq_qos_request *req), + TP_ARGS(req)); + /* macro versions of hooks are no longer required */ #endif /* _TRACE_HOOK_POWER_H */ diff --git a/kernel/power/qos.c b/kernel/power/qos.c index ec7e1e85923e..8da76f9baca2 100644 --- a/kernel/power/qos.c +++ b/kernel/power/qos.c @@ -38,6 +38,9 @@ #include #include #include +#undef CREATE_TRACE_POINT +#include + /* * locking rule: all changes to constraints or notifiers lists @@ -546,6 +549,7 @@ int freq_qos_add_request(struct freq_constraints *qos, req->type = 0; } + trace_android_vh_freq_qos_add_request(qos, req, type, value, ret); return ret; } EXPORT_SYMBOL_GPL(freq_qos_add_request); @@ -570,6 +574,7 @@ int freq_qos_update_request(struct freq_qos_request *req, s32 new_value) "%s() called for unknown object\n", __func__)) return -EINVAL; + trace_android_vh_freq_qos_update_request(req, new_value); if (req->pnode.prio == new_value) return 0; @@ -598,6 +603,7 @@ int freq_qos_remove_request(struct freq_qos_request *req) "%s() called for unknown object\n", __func__)) return -EINVAL; + trace_android_vh_freq_qos_remove_request(req); ret = freq_qos_apply(req, PM_QOS_REMOVE_REQ, PM_QOS_DEFAULT_VALUE); req->qos = NULL; req->type = 0;