Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2f8ed12f authored by Juri Lelli's avatar Juri Lelli Committed by Dmitry Shmidt
Browse files

ANDROID: DEBUG: sched,cpufreq: add cpu_capacity change tracepoint



This is useful when we want to compare cpu utilization and
cpu curr capacity side by side.

Signed-off-by: default avatarJuri Lelli <juri.lelli@arm.com>
Signed-off-by: default avatarAndres Oportus <andresoportus@google.com>
parent 79478804
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@
#include <linux/suspend.h>
#include <linux/syscore_ops.h>
#include <linux/tick.h>
#include <linux/sched.h>
#include <trace/events/power.h>

static LIST_HEAD(cpufreq_policy_list);
@@ -428,6 +429,7 @@ static void cpufreq_notify_post_transition(struct cpufreq_policy *policy,
void cpufreq_freq_transition_begin(struct cpufreq_policy *policy,
		struct cpufreq_freqs *freqs)
{
	int cpu;

	/*
	 * Catch double invocations of _begin() which lead to self-deadlock.
@@ -456,6 +458,8 @@ void cpufreq_freq_transition_begin(struct cpufreq_policy *policy,
	spin_unlock(&policy->transition_lock);

	scale_freq_capacity(policy, freqs);
	for_each_cpu(cpu, policy->cpus)
		trace_cpu_capacity(capacity_curr_of(cpu), cpu);

	cpufreq_notify_transition(policy, freqs, CPUFREQ_PRECHANGE);
}
+2 −0
Original line number Diff line number Diff line
@@ -1092,6 +1092,8 @@ struct sched_group_energy {
	struct capacity_state *cap_states; /* ptr to capacity state array */
};

unsigned long capacity_curr_of(int cpu);

struct sched_group;

struct sched_domain_shared {
+7 −0
Original line number Diff line number Diff line
@@ -172,6 +172,13 @@ TRACE_EVENT(cpu_frequency_limits,
		  (unsigned long)__entry->cpu_id)
);

DEFINE_EVENT(cpu, cpu_capacity,

	TP_PROTO(unsigned int capacity, unsigned int cpu_id),

	TP_ARGS(capacity, cpu_id)
);

TRACE_EVENT(device_pm_callback_start,

	TP_PROTO(struct device *dev, const char *pm_ops, int event),
+11 −0
Original line number Diff line number Diff line
@@ -5153,6 +5153,17 @@ static void record_wakee(struct task_struct *p)
	}
}

/*
 * Returns the current capacity of cpu after applying both
 * cpu and freq scaling.
 */
unsigned long capacity_curr_of(int cpu)
{
	return cpu_rq(cpu)->cpu_capacity_orig *
	       arch_scale_freq_capacity(NULL, cpu)
	       >> SCHED_CAPACITY_SHIFT;
}

static inline bool energy_aware(void)
{
	return sched_feat(ENERGY_AWARE);
+0 −11
Original line number Diff line number Diff line
@@ -1575,17 +1575,6 @@ static inline unsigned long cpu_util(int cpu)
	return __cpu_util(cpu, 0);
}

/*
 * Returns the current capacity of cpu after applying both
 * cpu and freq scaling.
 */
static inline unsigned long capacity_curr_of(int cpu)
{
	return cpu_rq(cpu)->cpu_capacity_orig *
	       arch_scale_freq_capacity(NULL, cpu)
	       >> SCHED_CAPACITY_SHIFT;
}

#endif

#ifdef CONFIG_CPU_FREQ_GOV_SCHED