summaryrefslogtreecommitdiff
path: root/drivers/cpufreq/cpufreq_interactive.c
diff options
context:
space:
mode:
authorBenn Pörscke <benn.porscke@stericsson.com>2011-12-16 15:04:55 +0100
committerBenn Pörscke <benn.porscke@stericsson.com>2011-12-16 15:04:55 +0100
commit93f379e6cfadfded0d262192ca69d1abc096d90e (patch)
tree43f180e31ee26ee94f7d2dd559132c30c6476b4d /drivers/cpufreq/cpufreq_interactive.c
parent77955e37bd395f789900b8e180991ad67cabd899 (diff)
Change-Id: I2fcf46d1fc4b0cd4c61e5be3654c43b80db86015
Diffstat (limited to 'drivers/cpufreq/cpufreq_interactive.c')
-rw-r--r--drivers/cpufreq/cpufreq_interactive.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/drivers/cpufreq/cpufreq_interactive.c b/drivers/cpufreq/cpufreq_interactive.c
index d8f62f402bf..38a874ed074 100644
--- a/drivers/cpufreq/cpufreq_interactive.c
+++ b/drivers/cpufreq/cpufreq_interactive.c
@@ -137,9 +137,14 @@ static void cpufreq_interactive_timer(unsigned long data)
if (delta_idle > delta_time)
cpu_load = 0;
- else
- cpu_load = 100 * (delta_time - delta_idle) / delta_time;
+ else {
+ unsigned long long load;
+
+ load = 100llu * (delta_time - delta_idle);
+ do_div(load, delta_time);
+ cpu_load = load;
+ }
delta_idle = (unsigned int) cputime64_sub(now_idle,
pcpu->freq_change_time_in_idle);
delta_time = (unsigned int) cputime64_sub(pcpu->timer_run_time,
@@ -147,9 +152,14 @@ static void cpufreq_interactive_timer(unsigned long data)
if (delta_idle > delta_time)
load_since_change = 0;
- else
- load_since_change =
- 100 * (delta_time - delta_idle) / delta_time;
+ else {
+ unsigned long long load;
+
+ load = 100llu * (delta_time - delta_idle);
+ do_div(load, delta_time);
+
+ load_since_change = load;
+ }
/*
* Choose greater of short-term load (since last idle timer