cpufreq: interactive: Report CPU loads through govinfo notifier
Report CPU load to modules subscribed to cpufreq govinfo notification
chain every time governor timer expires to evaluate load.
Change-Id: I0b35947b1924c179649aafa0b7b93d974164af1a
[junjiew@codeaurora.org: Resolved trivial merge conflicts]
Signed-off-by: Rohit Gupta <rohgup@codeaurora.org>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
diff --git a/drivers/cpufreq/cpufreq_interactive.c b/drivers/cpufreq/cpufreq_interactive.c
index 1d3a845..b4a19f4 100644
--- a/drivers/cpufreq/cpufreq_interactive.c
+++ b/drivers/cpufreq/cpufreq_interactive.c
@@ -421,6 +421,7 @@
unsigned int index;
unsigned long flags;
u64 max_fvtime;
+ struct cpufreq_govinfo int_info;
if (!down_read_trylock(&pcpu->enable_sem))
return;
@@ -459,8 +460,15 @@
do_div(cputime_speedadj, delta_time);
}
- spin_lock_irqsave(&pcpu->target_freq_lock, flags);
loadadjfreq = (unsigned int)cputime_speedadj * 100;
+
+ int_info.cpu = data;
+ int_info.load = loadadjfreq / pcpu->policy->max;
+ int_info.sampling_rate_us = tunables->timer_rate;
+ atomic_notifier_call_chain(&cpufreq_govinfo_notifier_list,
+ CPUFREQ_LOAD_CHANGE, &int_info);
+
+ spin_lock_irqsave(&pcpu->target_freq_lock, flags);
cpu_load = loadadjfreq / pcpu->policy->cur;
tunables->boosted = tunables->boost_val || now < tunables->boostpulse_endtime;