aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/cpufreq/cpufreq_ondemand.c
diff options
context:
space:
mode:
authorMartin Schwidefsky <schwidefsky@de.ibm.com>2011-12-19 13:23:15 -0500
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2011-12-19 13:23:15 -0500
commit612ef28a045efadb3a98d4492ead7806a146485d (patch)
tree05621c87b37e91c27b06d450d76adffe97ce9666 /drivers/cpufreq/cpufreq_ondemand.c
parentc3e0ef9a298e028a82ada28101ccd5cf64d209ee (diff)
parent07cde2608a3b5c66515363f1b53623b1536b9785 (diff)
Merge branch 'sched/core' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into cputime-tip
Conflicts: drivers/cpufreq/cpufreq_conservative.c drivers/cpufreq/cpufreq_ondemand.c drivers/macintosh/rack-meter.c fs/proc/stat.c fs/proc/uptime.c kernel/sched/core.c
Diffstat (limited to 'drivers/cpufreq/cpufreq_ondemand.c')
-rw-r--r--drivers/cpufreq/cpufreq_ondemand.c41
1 files changed, 20 insertions, 21 deletions
diff --git a/drivers/cpufreq/cpufreq_ondemand.c b/drivers/cpufreq/cpufreq_ondemand.c
index 07cffe2f6cff..3d679eee70a1 100644
--- a/drivers/cpufreq/cpufreq_ondemand.c
+++ b/drivers/cpufreq/cpufreq_ondemand.c
@@ -119,26 +119,26 @@ static struct dbs_tuners {
119 .powersave_bias = 0, 119 .powersave_bias = 0,
120}; 120};
121 121
122static inline cputime64_t get_cpu_idle_time_jiffy(unsigned int cpu, 122static inline u64 get_cpu_idle_time_jiffy(unsigned int cpu, u64 *wall)
123 cputime64_t *wall)
124{ 123{
125 cputime64_t idle_time; 124 u64 idle_time;
126 cputime64_t cur_wall_time; 125 u64 cur_wall_time;
127 cputime64_t busy_time; 126 u64 busy_time;
128 127
129 cur_wall_time = jiffies64_to_cputime64(get_jiffies_64()); 128 cur_wall_time = jiffies64_to_cputime64(get_jiffies_64());
130 busy_time = kstat_cpu(cpu).cpustat.user; 129
131 busy_time += kstat_cpu(cpu).cpustat.system; 130 busy_time = kcpustat_cpu(cpu).cpustat[CPUTIME_USER];
132 busy_time += kstat_cpu(cpu).cpustat.irq; 131 busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_SYSTEM];
133 busy_time += kstat_cpu(cpu).cpustat.softirq; 132 busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_IRQ];
134 busy_time += kstat_cpu(cpu).cpustat.steal; 133 busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_SOFTIRQ];
135 busy_time += kstat_cpu(cpu).cpustat.nice; 134 busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_STEAL];
135 busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_NICE];
136 136
137 idle_time = cur_wall_time - busy_time; 137 idle_time = cur_wall_time - busy_time;
138 if (wall) 138 if (wall)
139 *wall = (cputime64_t)jiffies_to_usecs(cur_wall_time); 139 *wall = jiffies_to_usecs(cur_wall_time);
140 140
141 return (cputime64_t)jiffies_to_usecs(idle_time); 141 return jiffies_to_usecs(idle_time);
142} 142}
143 143
144static inline cputime64_t get_cpu_idle_time(unsigned int cpu, cputime64_t *wall) 144static inline cputime64_t get_cpu_idle_time(unsigned int cpu, cputime64_t *wall)
@@ -344,7 +344,7 @@ static ssize_t store_ignore_nice_load(struct kobject *a, struct attribute *b,
344 dbs_info->prev_cpu_idle = get_cpu_idle_time(j, 344 dbs_info->prev_cpu_idle = get_cpu_idle_time(j,
345 &dbs_info->prev_cpu_wall); 345 &dbs_info->prev_cpu_wall);
346 if (dbs_tuners_ins.ignore_nice) 346 if (dbs_tuners_ins.ignore_nice)
347 dbs_info->prev_cpu_nice = kstat_cpu(j).cpustat.nice; 347 dbs_info->prev_cpu_nice = kcpustat_cpu(j).cpustat[CPUTIME_NICE];
348 348
349 } 349 }
350 return count; 350 return count;
@@ -454,11 +454,11 @@ static void dbs_check_cpu(struct cpu_dbs_info_s *this_dbs_info)
454 j_dbs_info->prev_cpu_iowait = cur_iowait_time; 454 j_dbs_info->prev_cpu_iowait = cur_iowait_time;
455 455
456 if (dbs_tuners_ins.ignore_nice) { 456 if (dbs_tuners_ins.ignore_nice) {
457 cputime64_t cur_nice; 457 u64 cur_nice;
458 unsigned long cur_nice_jiffies; 458 unsigned long cur_nice_jiffies;
459 459
460 cur_nice = kstat_cpu(j).cpustat.nice - 460 cur_nice = kcpustat_cpu(j).cpustat[CPUTIME_NICE] -
461 j_dbs_info->prev_cpu_nice; 461 j_dbs_info->prev_cpu_nice;
462 /* 462 /*
463 * Assumption: nice time between sampling periods will 463 * Assumption: nice time between sampling periods will
464 * be less than 2^32 jiffies for 32 bit sys 464 * be less than 2^32 jiffies for 32 bit sys
@@ -466,7 +466,7 @@ static void dbs_check_cpu(struct cpu_dbs_info_s *this_dbs_info)
466 cur_nice_jiffies = (unsigned long) 466 cur_nice_jiffies = (unsigned long)
467 cputime64_to_jiffies64(cur_nice); 467 cputime64_to_jiffies64(cur_nice);
468 468
469 j_dbs_info->prev_cpu_nice = kstat_cpu(j).cpustat.nice; 469 j_dbs_info->prev_cpu_nice = kcpustat_cpu(j).cpustat[CPUTIME_NICE];
470 idle_time += jiffies_to_usecs(cur_nice_jiffies); 470 idle_time += jiffies_to_usecs(cur_nice_jiffies);
471 } 471 }
472 472
@@ -645,10 +645,9 @@ static int cpufreq_governor_dbs(struct cpufreq_policy *policy,
645 645
646 j_dbs_info->prev_cpu_idle = get_cpu_idle_time(j, 646 j_dbs_info->prev_cpu_idle = get_cpu_idle_time(j,
647 &j_dbs_info->prev_cpu_wall); 647 &j_dbs_info->prev_cpu_wall);
648 if (dbs_tuners_ins.ignore_nice) { 648 if (dbs_tuners_ins.ignore_nice)
649 j_dbs_info->prev_cpu_nice = 649 j_dbs_info->prev_cpu_nice =
650 kstat_cpu(j).cpustat.nice; 650 kcpustat_cpu(j).cpustat[CPUTIME_NICE];
651 }
652 } 651 }
653 this_dbs_info->cpu = cpu; 652 this_dbs_info->cpu = cpu;
654 this_dbs_info->rate_mult = 1; 653 this_dbs_info->rate_mult = 1;