diff options
| author | Minsung Kim <ms925.kim@samsung.com> | 2013-04-23 22:32:01 +0900 | 
|---|---|---|
| committer | Arve Hjønnevåg <arve@android.com> | 2013-07-01 14:16:27 -0700 | 
| commit | 3ab74abdc30faaaa49eae6ae233769b092ec3378 (patch) | |
| tree | 3c5a641557d0752e89759ee40cf9fc6d2b738cea | |
| parent | d06bc7e5b3a3968721e0a34ce4a515cf5fa873e3 (diff) | |
| download | olio-linux-3.10-3ab74abdc30faaaa49eae6ae233769b092ec3378.tar.xz olio-linux-3.10-3ab74abdc30faaaa49eae6ae233769b092ec3378.zip | |
cpufreq: interactive: avoid underflow on active time calculation
Check for idle time delta less than elapsed time delta, avoid
underflow computing active time.
Change-Id: I3e4c6ef1ad794eec49ed379c0c50fa727fd6ad28
Signed-off-by: Minsung Kim <ms925.kim@samsung.com>
| -rw-r--r-- | drivers/cpufreq/cpufreq_interactive.c | 7 | 
1 files changed, 6 insertions, 1 deletions
| diff --git a/drivers/cpufreq/cpufreq_interactive.c b/drivers/cpufreq/cpufreq_interactive.c index b4d12b266c6..7303f50a118 100644 --- a/drivers/cpufreq/cpufreq_interactive.c +++ b/drivers/cpufreq/cpufreq_interactive.c @@ -325,7 +325,12 @@ static u64 update_load(int cpu)  	now_idle = get_cpu_idle_time(cpu, &now);  	delta_idle = (unsigned int)(now_idle - pcpu->time_in_idle);  	delta_time = (unsigned int)(now - pcpu->time_in_idle_timestamp); -	active_time = delta_time - delta_idle; + +	if (delta_time <= delta_idle) +		active_time = 0; +	else +		active_time = delta_time - delta_idle; +  	pcpu->cputime_speedadj += active_time * pcpu->policy->cur;  	pcpu->time_in_idle = now_idle; |