devfreq: set current freq in case no change required

API scaling_state_check() returns 0 in case no change
in frequency is required
In nvhost_pod_estimate_freq(), we set *freq to 0
in case scaling_state_check() returns 0

And as a result of this, update_devfreq() will just
keep setting minimum frequency instead of keeping
same frequency - and this results in huge
performance degradation

To fix this, set *freq to current frequency in case
scaling_state_check() returns 0 as estimated
frequency

Bug 200255163

Change-Id: Ia8fe54dfd48b0898cc1dd53d821b1c95865b1f57
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: http://git-master/r/1261281
(cherry picked from linux-4.9 commit 624718566201ce9c0b9780be6f29dc2ae9082b09)
Reviewed-on: https://git-master.nvidia.com/r/1770146
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Timo Alho <talho@nvidia.com>
Tested-by: Timo Alho <talho@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Deepak Nibade
2016-11-29 14:03:25 +05:30
committed by Laxman Dewangan
parent 8a5e6773ed
commit 625f652f89

View File

@@ -799,8 +799,10 @@ static int nvhost_pod_estimate_freq(struct devfreq *df,
msecs_to_jiffies(podgov->p_slowdown_delay)); msecs_to_jiffies(podgov->p_slowdown_delay));
} }
if (!(*freq) || if (!(*freq))
(freqlist_up(podgov, *freq, 0) == dev_stat.current_frequency)) *freq = dev_stat.current_frequency;
if (freqlist_up(podgov, *freq, 0) == dev_stat.current_frequency)
return 0; return 0;
podgov->last_scale = now; podgov->last_scale = now;