ANDROID: Add vendor hook while registering energy model
Vendor architectures may contain CPUs running on the same clock line which contain different capacities. Add a tracehook in this path to allow vendor modules to skip implicit check to prevent crashes. Bug: 206602617 Change-Id: Ica01a214689607b8d79b370c20bc9a8c44ca2117 Signed-off-by: Shaleen Agrawal <shalagra@codeaurora.org>
This commit is contained in:
committed by
Todd Kjos
parent
4c4e15448e
commit
12d9e3b85d
@@ -198,3 +198,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_file_open);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_bpf_syscall);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_cpus_allowed_ptr_locked);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_rto_next_cpu);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_em_dev_register_pd);
|
||||
|
||||
@@ -311,6 +311,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_dequeue_task_fair,
|
||||
TP_PROTO(struct rq *rq, struct task_struct *p, int flags),
|
||||
TP_ARGS(rq, p, flags), 1);
|
||||
|
||||
DECLARE_HOOK(android_vh_em_dev_register_pd,
|
||||
TP_PROTO(bool *cond),
|
||||
TP_ARGS(cond));
|
||||
|
||||
#endif /* _TRACE_HOOK_SCHED_H */
|
||||
/* This part must be outside protection */
|
||||
#include <trace/define_trace.h>
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include <linux/energy_model.h>
|
||||
#include <linux/sched/topology.h>
|
||||
#include <linux/slab.h>
|
||||
#include <trace/hooks/sched.h>
|
||||
|
||||
/*
|
||||
* Mutex serializing the registrations of performance domains and letting
|
||||
@@ -286,6 +287,7 @@ int em_dev_register_perf_domain(struct device *dev, unsigned int nr_states,
|
||||
{
|
||||
unsigned long cap, prev_cap = 0;
|
||||
int cpu, ret;
|
||||
bool cond = false;
|
||||
|
||||
if (!dev || !nr_states || !cb)
|
||||
return -EINVAL;
|
||||
@@ -314,6 +316,10 @@ int em_dev_register_perf_domain(struct device *dev, unsigned int nr_states,
|
||||
ret = -EEXIST;
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
trace_android_vh_em_dev_register_pd(&cond);
|
||||
if (cond)
|
||||
continue;
|
||||
/*
|
||||
* All CPUs of a domain must have the same
|
||||
* micro-architecture since they all share the same
|
||||
|
||||
Reference in New Issue
Block a user