diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 529f8730cb15..2bc0ac52c068 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -28,6 +28,7 @@ #include #include #include +#include /* * Export tracepoints that act as a bare tracehook (ie: have no trace event @@ -126,3 +127,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_oops_exit); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_size_check); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_format_check); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_dump_buffer); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_allow_domain_state); diff --git a/drivers/base/power/domain_governor.c b/drivers/base/power/domain_governor.c index 2afb7fa90d5d..23b333fca6cc 100644 --- a/drivers/base/power/domain_governor.c +++ b/drivers/base/power/domain_governor.c @@ -12,6 +12,8 @@ #include #include +#include + static int dev_update_qos_constraint(struct device *dev, void *data) { s64 *constraint_ns_p = data; @@ -174,6 +176,11 @@ static bool __default_power_down_ok(struct dev_pm_domain *pd, struct pm_domain_data *pdd; s64 min_off_time_ns; s64 off_on_time_ns; + bool allow = true; + + trace_android_vh_allow_domain_state(genpd, state, &allow); + if (!allow) + return false; off_on_time_ns = genpd->states[state].power_off_latency_ns + genpd->states[state].power_on_latency_ns; diff --git a/include/trace/hooks/pm_domain.h b/include/trace/hooks/pm_domain.h new file mode 100644 index 000000000000..ad856f980bd3 --- /dev/null +++ b/include/trace/hooks/pm_domain.h @@ -0,0 +1,27 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM pm_domain + +#define TRACE_INCLUDE_PATH trace/hooks + +#if !defined(_TRACE_HOOK_PM_DOMAIN_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_HOOK_PM_DOMAIN_H + +#include +#include + +#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS) +struct generic_pm_domain; +DECLARE_HOOK(android_vh_allow_domain_state, + TP_PROTO(struct generic_pm_domain *genpd, uint32_t idx, bool *allow), + TP_ARGS(genpd, idx, allow)) + +#else +#define trace_android_vh_allow_domain_state(genpd, idx, allow) +#endif + +#endif /* _TRACE_HOOK_PM_DOMAIN_H */ + +#include +