+++ /dev/null
-From: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
-Subject: cpufreq: Add a cpu parameter to __cpufreq_driver_getavg().
-
-Add a cpu parameter to __cpufreq_driver_getavg(). This is needed for software
-cpufreq coordination where policy->cpu may not be same as the CPU on which we
-want to getavg frequency.
-
-A follow-on patch will use this parameter to getavg freq from all cpus
-in policy->cpus.
-
-Change since last patch. Fix the offline/online and suspend/resume
-oops reported by Youquan Song <youquan.song@intel.com>
-
-Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
-Signed-off-by: Thomas Renninger <trenn@suse.de>
-
----
- arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c | 5 +++--
- drivers/cpufreq/cpufreq.c | 6 +++---
- drivers/cpufreq/cpufreq_ondemand.c | 2 +-
- include/linux/cpufreq.h | 7 +++++--
- 4 files changed, 12 insertions(+), 8 deletions(-)
-
-Index: cpufreq.git/drivers/cpufreq/cpufreq.c
-===================================================================
---- cpufreq.git.orig/drivers/cpufreq/cpufreq.c 2008-08-04 10:28:26.000000000 -0700
-+++ cpufreq.git/drivers/cpufreq/cpufreq.c 2008-08-04 10:31:27.000000000 -0700
-@@ -1485,7 +1485,7 @@ int cpufreq_driver_target(struct cpufreq
- }
- EXPORT_SYMBOL_GPL(cpufreq_driver_target);
-
--int __cpufreq_driver_getavg(struct cpufreq_policy *policy)
-+int __cpufreq_driver_getavg(struct cpufreq_policy *policy, unsigned int cpu)
- {
- int ret = 0;
-
-@@ -1493,8 +1493,8 @@ int __cpufreq_driver_getavg(struct cpufr
- if (!policy)
- return -EINVAL;
-
-- if (cpu_online(policy->cpu) && cpufreq_driver->getavg)
-- ret = cpufreq_driver->getavg(policy->cpu);
-+ if (cpu_online(cpu) && cpufreq_driver->getavg)
-+ ret = cpufreq_driver->getavg(policy, cpu);
-
- cpufreq_cpu_put(policy);
- return ret;
-Index: cpufreq.git/drivers/cpufreq/cpufreq_ondemand.c
-===================================================================
---- cpufreq.git.orig/drivers/cpufreq/cpufreq_ondemand.c 2008-08-04 10:28:26.000000000 -0700
-+++ cpufreq.git/drivers/cpufreq/cpufreq_ondemand.c 2008-08-04 10:31:27.000000000 -0700
-@@ -415,7 +415,7 @@ static void dbs_check_cpu(struct cpu_dbs
- if (load < (dbs_tuners_ins.up_threshold - 10)) {
- unsigned int freq_next, freq_cur;
-
-- freq_cur = __cpufreq_driver_getavg(policy);
-+ freq_cur = __cpufreq_driver_getavg(policy, policy->cpu);
- if (!freq_cur)
- freq_cur = policy->cur;
-
-Index: cpufreq.git/include/linux/cpufreq.h
-===================================================================
---- cpufreq.git.orig/include/linux/cpufreq.h 2008-08-04 10:28:26.000000000 -0700
-+++ cpufreq.git/include/linux/cpufreq.h 2008-08-04 10:31:27.000000000 -0700
-@@ -187,7 +187,8 @@ extern int __cpufreq_driver_target(struc
- unsigned int relation);
-
-
--extern int __cpufreq_driver_getavg(struct cpufreq_policy *policy);
-+extern int __cpufreq_driver_getavg(struct cpufreq_policy *policy,
-+ unsigned int cpu);
-
- int cpufreq_register_governor(struct cpufreq_governor *governor);
- void cpufreq_unregister_governor(struct cpufreq_governor *governor);
-@@ -226,7 +227,9 @@ struct cpufreq_driver {
- unsigned int (*get) (unsigned int cpu);
-
- /* optional */
-- unsigned int (*getavg) (unsigned int cpu);
-+ unsigned int (*getavg) (struct cpufreq_policy *policy,
-+ unsigned int cpu);
-+
- int (*exit) (struct cpufreq_policy *policy);
- int (*suspend) (struct cpufreq_policy *policy, pm_message_t pmsg);
- int (*resume) (struct cpufreq_policy *policy);
-Index: cpufreq.git/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
-===================================================================
---- cpufreq.git.orig/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c 2008-08-04 10:28:26.000000000 -0700
-+++ cpufreq.git/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c 2008-08-04 10:31:27.000000000 -0700
-@@ -256,7 +256,8 @@ static u32 get_cur_val(const cpumask_t *
- * Only IA32_APERF/IA32_MPERF ratio is architecturally defined and
- * no meaning should be associated with absolute values of these MSRs.
- */
--static unsigned int get_measured_perf(unsigned int cpu)
-+static unsigned int get_measured_perf(struct cpufreq_policy *policy,
-+ unsigned int cpu)
- {
- union {
- struct {
-@@ -326,7 +327,7 @@ static unsigned int get_measured_perf(un
-
- #endif
-
-- retval = per_cpu(drv_data, cpu)->max_freq * perf_percent / 100;
-+ retval = per_cpu(drv_data, policy->cpu)->max_freq * perf_percent / 100;
-
- put_cpu();
- set_cpus_allowed_ptr(current, &saved_mask);
-
---
-