Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq
* 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq: (35 commits) [CPUFREQ] Prevent p4-clockmod from auto-binding to the ondemand governor. [CPUFREQ] Make cpufreq-nforce2 less obnoxious [CPUFREQ] p4-clockmod reports wrong frequency. [CPUFREQ] powernow-k8: Use a common exit path. [CPUFREQ] Change link order of x86 cpufreq modules [CPUFREQ] conservative: remove 10x from def_sampling_rate [CPUFREQ] conservative: fixup governor to function more like ondemand logic [CPUFREQ] conservative: fix dbs_cpufreq_notifier so freq is not locked [CPUFREQ] conservative: amend author's email address [CPUFREQ] Use swap() in longhaul.c [CPUFREQ] checkpatch cleanups for acpi-cpufreq [CPUFREQ] powernow-k8: Only print error message once, not per core. [CPUFREQ] ondemand/conservative: sanitize sampling_rate restrictions [CPUFREQ] ondemand/conservative: deprecate sampling_rate{min,max} [CPUFREQ] powernow-k8: Always compile powernow-k8 driver with ACPI support [CPUFREQ] Introduce /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_transition_latency [CPUFREQ] checkpatch cleanups for powernow-k8 [CPUFREQ] checkpatch cleanups for ondemand governor. [CPUFREQ] checkpatch cleanups for powernow-k7 [CPUFREQ] checkpatch cleanups for speedstep related drivers. ...
This commit is contained in:
@@ -104,7 +104,8 @@ EXPORT_SYMBOL_GPL(unlock_policy_rwsem_write);
|
||||
|
||||
|
||||
/* internal prototypes */
|
||||
static int __cpufreq_governor(struct cpufreq_policy *policy, unsigned int event);
|
||||
static int __cpufreq_governor(struct cpufreq_policy *policy,
|
||||
unsigned int event);
|
||||
static unsigned int __cpufreq_get(unsigned int cpu);
|
||||
static void handle_update(struct work_struct *work);
|
||||
|
||||
@@ -128,7 +129,7 @@ static int __init init_cpufreq_transition_notifier_list(void)
|
||||
pure_initcall(init_cpufreq_transition_notifier_list);
|
||||
|
||||
static LIST_HEAD(cpufreq_governor_list);
|
||||
static DEFINE_MUTEX (cpufreq_governor_mutex);
|
||||
static DEFINE_MUTEX(cpufreq_governor_mutex);
|
||||
|
||||
struct cpufreq_policy *cpufreq_cpu_get(unsigned int cpu)
|
||||
{
|
||||
@@ -371,7 +372,7 @@ static struct cpufreq_governor *__find_governor(const char *str_governor)
|
||||
struct cpufreq_governor *t;
|
||||
|
||||
list_for_each_entry(t, &cpufreq_governor_list, governor_list)
|
||||
if (!strnicmp(str_governor,t->name,CPUFREQ_NAME_LEN))
|
||||
if (!strnicmp(str_governor, t->name, CPUFREQ_NAME_LEN))
|
||||
return t;
|
||||
|
||||
return NULL;
|
||||
@@ -429,15 +430,11 @@ static int cpufreq_parse_governor(char *str_governor, unsigned int *policy,
|
||||
|
||||
mutex_unlock(&cpufreq_governor_mutex);
|
||||
}
|
||||
out:
|
||||
out:
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
/* drivers/base/cpu.c */
|
||||
extern struct sysdev_class cpu_sysdev_class;
|
||||
|
||||
|
||||
/**
|
||||
* cpufreq_per_cpu_attr_read() / show_##file_name() -
|
||||
* print out cpufreq information
|
||||
@@ -450,11 +447,12 @@ extern struct sysdev_class cpu_sysdev_class;
|
||||
static ssize_t show_##file_name \
|
||||
(struct cpufreq_policy *policy, char *buf) \
|
||||
{ \
|
||||
return sprintf (buf, "%u\n", policy->object); \
|
||||
return sprintf(buf, "%u\n", policy->object); \
|
||||
}
|
||||
|
||||
show_one(cpuinfo_min_freq, cpuinfo.min_freq);
|
||||
show_one(cpuinfo_max_freq, cpuinfo.max_freq);
|
||||
show_one(cpuinfo_transition_latency, cpuinfo.transition_latency);
|
||||
show_one(scaling_min_freq, min);
|
||||
show_one(scaling_max_freq, max);
|
||||
show_one(scaling_cur_freq, cur);
|
||||
@@ -476,7 +474,7 @@ static ssize_t store_##file_name \
|
||||
if (ret) \
|
||||
return -EINVAL; \
|
||||
\
|
||||
ret = sscanf (buf, "%u", &new_policy.object); \
|
||||
ret = sscanf(buf, "%u", &new_policy.object); \
|
||||
if (ret != 1) \
|
||||
return -EINVAL; \
|
||||
\
|
||||
@@ -486,8 +484,8 @@ static ssize_t store_##file_name \
|
||||
return ret ? ret : count; \
|
||||
}
|
||||
|
||||
store_one(scaling_min_freq,min);
|
||||
store_one(scaling_max_freq,max);
|
||||
store_one(scaling_min_freq, min);
|
||||
store_one(scaling_max_freq, max);
|
||||
|
||||
/**
|
||||
* show_cpuinfo_cur_freq - current CPU frequency as detected by hardware
|
||||
@@ -507,12 +505,13 @@ static ssize_t show_cpuinfo_cur_freq(struct cpufreq_policy *policy,
|
||||
*/
|
||||
static ssize_t show_scaling_governor(struct cpufreq_policy *policy, char *buf)
|
||||
{
|
||||
if(policy->policy == CPUFREQ_POLICY_POWERSAVE)
|
||||
if (policy->policy == CPUFREQ_POLICY_POWERSAVE)
|
||||
return sprintf(buf, "powersave\n");
|
||||
else if (policy->policy == CPUFREQ_POLICY_PERFORMANCE)
|
||||
return sprintf(buf, "performance\n");
|
||||
else if (policy->governor)
|
||||
return scnprintf(buf, CPUFREQ_NAME_LEN, "%s\n", policy->governor->name);
|
||||
return scnprintf(buf, CPUFREQ_NAME_LEN, "%s\n",
|
||||
policy->governor->name);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -531,7 +530,7 @@ static ssize_t store_scaling_governor(struct cpufreq_policy *policy,
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = sscanf (buf, "%15s", str_governor);
|
||||
ret = sscanf(buf, "%15s", str_governor);
|
||||
if (ret != 1)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -575,7 +574,8 @@ static ssize_t show_scaling_available_governors(struct cpufreq_policy *policy,
|
||||
}
|
||||
|
||||
list_for_each_entry(t, &cpufreq_governor_list, governor_list) {
|
||||
if (i >= (ssize_t) ((PAGE_SIZE / sizeof(char)) - (CPUFREQ_NAME_LEN + 2)))
|
||||
if (i >= (ssize_t) ((PAGE_SIZE / sizeof(char))
|
||||
- (CPUFREQ_NAME_LEN + 2)))
|
||||
goto out;
|
||||
i += scnprintf(&buf[i], CPUFREQ_NAME_LEN, "%s ", t->name);
|
||||
}
|
||||
@@ -594,7 +594,7 @@ static ssize_t show_cpus(const struct cpumask *mask, char *buf)
|
||||
i += scnprintf(&buf[i], (PAGE_SIZE - i - 2), " ");
|
||||
i += scnprintf(&buf[i], (PAGE_SIZE - i - 2), "%u", cpu);
|
||||
if (i >= (PAGE_SIZE - 5))
|
||||
break;
|
||||
break;
|
||||
}
|
||||
i += sprintf(&buf[i], "\n");
|
||||
return i;
|
||||
@@ -660,6 +660,7 @@ __ATTR(_name, 0644, show_##_name, store_##_name)
|
||||
define_one_ro0400(cpuinfo_cur_freq);
|
||||
define_one_ro(cpuinfo_min_freq);
|
||||
define_one_ro(cpuinfo_max_freq);
|
||||
define_one_ro(cpuinfo_transition_latency);
|
||||
define_one_ro(scaling_available_governors);
|
||||
define_one_ro(scaling_driver);
|
||||
define_one_ro(scaling_cur_freq);
|
||||
@@ -673,6 +674,7 @@ define_one_rw(scaling_setspeed);
|
||||
static struct attribute *default_attrs[] = {
|
||||
&cpuinfo_min_freq.attr,
|
||||
&cpuinfo_max_freq.attr,
|
||||
&cpuinfo_transition_latency.attr,
|
||||
&scaling_min_freq.attr,
|
||||
&scaling_max_freq.attr,
|
||||
&affected_cpus.attr,
|
||||
@@ -684,10 +686,10 @@ static struct attribute *default_attrs[] = {
|
||||
NULL
|
||||
};
|
||||
|
||||
#define to_policy(k) container_of(k,struct cpufreq_policy,kobj)
|
||||
#define to_attr(a) container_of(a,struct freq_attr,attr)
|
||||
#define to_policy(k) container_of(k, struct cpufreq_policy, kobj)
|
||||
#define to_attr(a) container_of(a, struct freq_attr, attr)
|
||||
|
||||
static ssize_t show(struct kobject *kobj, struct attribute *attr ,char *buf)
|
||||
static ssize_t show(struct kobject *kobj, struct attribute *attr, char *buf)
|
||||
{
|
||||
struct cpufreq_policy *policy = to_policy(kobj);
|
||||
struct freq_attr *fattr = to_attr(attr);
|
||||
@@ -853,10 +855,10 @@ static int cpufreq_add_dev(struct sys_device *sys_dev)
|
||||
if (cpu == j)
|
||||
continue;
|
||||
|
||||
/* check for existing affected CPUs. They may not be aware
|
||||
* of it due to CPU Hotplug.
|
||||
/* Check for existing affected CPUs.
|
||||
* They may not be aware of it due to CPU Hotplug.
|
||||
*/
|
||||
managed_policy = cpufreq_cpu_get(j); // FIXME: Where is this released? What about error paths?
|
||||
managed_policy = cpufreq_cpu_get(j); /* FIXME: Where is this released? What about error paths? */
|
||||
if (unlikely(managed_policy)) {
|
||||
|
||||
/* Set proper policy_cpu */
|
||||
@@ -1127,8 +1129,8 @@ static void handle_update(struct work_struct *work)
|
||||
* @old_freq: CPU frequency the kernel thinks the CPU runs at
|
||||
* @new_freq: CPU frequency the CPU actually runs at
|
||||
*
|
||||
* We adjust to current frequency first, and need to clean up later. So either call
|
||||
* to cpufreq_update_policy() or schedule handle_update()).
|
||||
* We adjust to current frequency first, and need to clean up later.
|
||||
* So either call to cpufreq_update_policy() or schedule handle_update()).
|
||||
*/
|
||||
static void cpufreq_out_of_sync(unsigned int cpu, unsigned int old_freq,
|
||||
unsigned int new_freq)
|
||||
@@ -1610,7 +1612,8 @@ EXPORT_SYMBOL_GPL(cpufreq_unregister_governor);
|
||||
|
||||
/**
|
||||
* cpufreq_get_policy - get the current cpufreq_policy
|
||||
* @policy: struct cpufreq_policy into which the current cpufreq_policy is written
|
||||
* @policy: struct cpufreq_policy into which the current cpufreq_policy
|
||||
* is written
|
||||
*
|
||||
* Reads the current cpufreq policy.
|
||||
*/
|
||||
|
Reference in New Issue
Block a user