summaryrefslogtreecommitdiffstats
path: root/drivers/cpufreq
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@linaro.org>2015-01-06 21:09:14 +0530
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2015-01-23 23:06:45 +0100
commite73476949c6d1e2edd04bbf7b5bae30afa370e33 (patch)
tree26eac4f608f20377a8575db5fff40b7e4182e1e4 /drivers/cpufreq
parent9225913d386537f84f0eb72f022a8b4b9e684846 (diff)
downloadlinux-e73476949c6d1e2edd04bbf7b5bae30afa370e33.tar.gz
linux-e73476949c6d1e2edd04bbf7b5bae30afa370e33.tar.bz2
linux-e73476949c6d1e2edd04bbf7b5bae30afa370e33.zip
cpufreq: stats: don't update stats on false notifiers
We need to call cpufreq_stats_update() to update 'time_in_state' for the last frequency. This is achieved by calling it from cpufreq_stat_notifier_trans(), which is called after frequency transition. But if we detect that the cpu's frequency haven't really changed and its a false POSTCHANGE notification, we don't really need to update time_in_state. It wouldn't cause any harm in calling cpufreq_stats_update() but we can avoid calling it here and call it when the frequency really changes. The result will be the same but more efficient. Reviewed-by: Prarit Bhargava <prarit@redhat.com> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/cpufreq')
-rw-r--r--drivers/cpufreq/cpufreq_stats.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/cpufreq/cpufreq_stats.c b/drivers/cpufreq/cpufreq_stats.c
index 4cd261156fff..c948086a332b 100644
--- a/drivers/cpufreq/cpufreq_stats.c
+++ b/drivers/cpufreq/cpufreq_stats.c
@@ -289,11 +289,11 @@ static int cpufreq_stat_notifier_trans(struct notifier_block *nb,
if (old_index == -1 || new_index == -1)
goto put_policy;
- cpufreq_stats_update(stats);
-
if (old_index == new_index)
goto put_policy;
+ cpufreq_stats_update(stats);
+
spin_lock(&cpufreq_stats_lock);
stats->last_index = new_index;
#ifdef CONFIG_CPU_FREQ_STAT_DETAILS