diff options
| author | 2015-01-06 21:09:14 +0530 | |
|---|---|---|
| committer | 2015-01-23 23:06:45 +0100 | |
| commit | e73476949c6d1e2edd04bbf7b5bae30afa370e33 (patch) | |
| tree | 26eac4f608f20377a8575db5fff40b7e4182e1e4 | |
| parent | cpufreq: stats: don't update stats from show_trans_table() (diff) | |
| download | linux-dev-e73476949c6d1e2edd04bbf7b5bae30afa370e33.tar.xz linux-dev-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>
| -rw-r--r-- | drivers/cpufreq/cpufreq_stats.c | 4 |
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 |
