cpufreq: interactive: avoid underflow on active time calculation
authorMinsung Kim <ms925.kim@samsung.com>
Tue, 23 Apr 2013 13:32:01 +0000 (22:32 +0900)
committerArve Hjønnevåg <arve@android.com>
Mon, 1 Jul 2013 21:16:27 +0000 (14:16 -0700)
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>
drivers/cpufreq/cpufreq_interactive.c

index b4d12b266c648d44fb6e4b7faaa6f13b29f20339..7303f50a118098a8e37c538bb2b17f374d07c362 100644 (file)
@@ -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;