diff options
-rw-r--r-- | drivers/cpufreq/cpufreq_ondemand.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/drivers/cpufreq/cpufreq_ondemand.c b/drivers/cpufreq/cpufreq_ondemand.c index dc6f357390e2..e794527e4925 100644 --- a/drivers/cpufreq/cpufreq_ondemand.c +++ b/drivers/cpufreq/cpufreq_ondemand.c | |||
@@ -96,15 +96,25 @@ static struct dbs_tuners { | |||
96 | 96 | ||
97 | static inline cputime64_t get_cpu_idle_time(unsigned int cpu) | 97 | static inline cputime64_t get_cpu_idle_time(unsigned int cpu) |
98 | { | 98 | { |
99 | cputime64_t retval; | 99 | cputime64_t idle_time; |
100 | cputime64_t cur_jiffies; | ||
101 | cputime64_t busy_time; | ||
100 | 102 | ||
101 | retval = cputime64_add(kstat_cpu(cpu).cpustat.idle, | 103 | cur_jiffies = jiffies64_to_cputime64(get_jiffies_64()); |
102 | kstat_cpu(cpu).cpustat.iowait); | 104 | busy_time = cputime64_add(kstat_cpu(cpu).cpustat.user, |
105 | kstat_cpu(cpu).cpustat.system); | ||
103 | 106 | ||
104 | if (dbs_tuners_ins.ignore_nice) | 107 | busy_time = cputime64_add(busy_time, kstat_cpu(cpu).cpustat.irq); |
105 | retval = cputime64_add(retval, kstat_cpu(cpu).cpustat.nice); | 108 | busy_time = cputime64_add(busy_time, kstat_cpu(cpu).cpustat.softirq); |
109 | busy_time = cputime64_add(busy_time, kstat_cpu(cpu).cpustat.steal); | ||
106 | 110 | ||
107 | return retval; | 111 | if (!dbs_tuners_ins.ignore_nice) { |
112 | busy_time = cputime64_add(busy_time, | ||
113 | kstat_cpu(cpu).cpustat.nice); | ||
114 | } | ||
115 | |||
116 | idle_time = cputime64_sub(cur_jiffies, busy_time); | ||
117 | return idle_time; | ||
108 | } | 118 | } |
109 | 119 | ||
110 | /* | 120 | /* |
@@ -339,7 +349,8 @@ static void dbs_check_cpu(struct cpu_dbs_info_s *this_dbs_info) | |||
339 | cur_jiffies = jiffies64_to_cputime64(get_jiffies_64()); | 349 | cur_jiffies = jiffies64_to_cputime64(get_jiffies_64()); |
340 | total_ticks = (unsigned int) cputime64_sub(cur_jiffies, | 350 | total_ticks = (unsigned int) cputime64_sub(cur_jiffies, |
341 | this_dbs_info->prev_cpu_wall); | 351 | this_dbs_info->prev_cpu_wall); |
342 | this_dbs_info->prev_cpu_wall = cur_jiffies; | 352 | this_dbs_info->prev_cpu_wall = get_jiffies_64(); |
353 | |||
343 | if (!total_ticks) | 354 | if (!total_ticks) |
344 | return; | 355 | return; |
345 | /* | 356 | /* |