[CPUFREQ] Fix coding style issues in cpufreq.

Clean up cpufreq subsystem to fix coding style issues and to improve
the readability.

Signed-off-by: Gautham R Shenoy <ego@in.ibm.com>
Signed-off-by: Dave Jones <davej@redhat.com>
This commit is contained in:
Gautham R Shenoy 2006-10-26 16:20:58 +05:30 committed by Dave Jones
parent 95625b8f19
commit e08f5f5bb5
7 changed files with 150 additions and 78 deletions

View file

@ -29,7 +29,8 @@
#include <linux/completion.h> #include <linux/completion.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#define dprintk(msg...) cpufreq_debug_printk(CPUFREQ_DEBUG_CORE, "cpufreq-core", msg) #define dprintk(msg...) cpufreq_debug_printk(CPUFREQ_DEBUG_CORE, \
"cpufreq-core", msg)
/** /**
* The "cpufreq driver" - the arch- or hardware-dependent low * The "cpufreq driver" - the arch- or hardware-dependent low
@ -41,7 +42,8 @@ static struct cpufreq_policy *cpufreq_cpu_data[NR_CPUS];
static DEFINE_SPINLOCK(cpufreq_driver_lock); static DEFINE_SPINLOCK(cpufreq_driver_lock);
/* internal prototypes */ /* 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 void handle_update(void *data); static void handle_update(void *data);
/** /**
@ -151,7 +153,8 @@ static void cpufreq_debug_disable_ratelimit(void)
spin_unlock_irqrestore(&disable_ratelimit_lock, flags); spin_unlock_irqrestore(&disable_ratelimit_lock, flags);
} }
void cpufreq_debug_printk(unsigned int type, const char *prefix, const char *fmt, ...) void cpufreq_debug_printk(unsigned int type, const char *prefix,
const char *fmt, ...)
{ {
char s[256]; char s[256];
va_list args; va_list args;
@ -161,7 +164,8 @@ void cpufreq_debug_printk(unsigned int type, const char *prefix, const char *fmt
WARN_ON(!prefix); WARN_ON(!prefix);
if (type & debug) { if (type & debug) {
spin_lock_irqsave(&disable_ratelimit_lock, flags); spin_lock_irqsave(&disable_ratelimit_lock, flags);
if (!disable_ratelimit && debug_ratelimit && !printk_ratelimit()) { if (!disable_ratelimit && debug_ratelimit
&& !printk_ratelimit()) {
spin_unlock_irqrestore(&disable_ratelimit_lock, flags); spin_unlock_irqrestore(&disable_ratelimit_lock, flags);
return; return;
} }
@ -182,10 +186,12 @@ EXPORT_SYMBOL(cpufreq_debug_printk);
module_param(debug, uint, 0644); module_param(debug, uint, 0644);
MODULE_PARM_DESC(debug, "CPUfreq debugging: add 1 to debug core, 2 to debug drivers, and 4 to debug governors."); MODULE_PARM_DESC(debug, "CPUfreq debugging: add 1 to debug core,"
" 2 to debug drivers, and 4 to debug governors.");
module_param(debug_ratelimit, uint, 0644); module_param(debug_ratelimit, uint, 0644);
MODULE_PARM_DESC(debug_ratelimit, "CPUfreq debugging: set to 0 to disable ratelimiting."); MODULE_PARM_DESC(debug_ratelimit, "CPUfreq debugging:"
" set to 0 to disable ratelimiting.");
#else /* !CONFIG_CPU_FREQ_DEBUG */ #else /* !CONFIG_CPU_FREQ_DEBUG */
@ -219,17 +225,23 @@ static void adjust_jiffies(unsigned long val, struct cpufreq_freqs *ci)
if (!l_p_j_ref_freq) { if (!l_p_j_ref_freq) {
l_p_j_ref = loops_per_jiffy; l_p_j_ref = loops_per_jiffy;
l_p_j_ref_freq = ci->old; l_p_j_ref_freq = ci->old;
dprintk("saving %lu as reference value for loops_per_jiffy; freq is %u kHz\n", l_p_j_ref, l_p_j_ref_freq); dprintk("saving %lu as reference value for loops_per_jiffy;"
"freq is %u kHz\n", l_p_j_ref, l_p_j_ref_freq);
} }
if ((val == CPUFREQ_PRECHANGE && ci->old < ci->new) || if ((val == CPUFREQ_PRECHANGE && ci->old < ci->new) ||
(val == CPUFREQ_POSTCHANGE && ci->old > ci->new) || (val == CPUFREQ_POSTCHANGE && ci->old > ci->new) ||
(val == CPUFREQ_RESUMECHANGE || val == CPUFREQ_SUSPENDCHANGE)) { (val == CPUFREQ_RESUMECHANGE || val == CPUFREQ_SUSPENDCHANGE)) {
loops_per_jiffy = cpufreq_scale(l_p_j_ref, l_p_j_ref_freq, ci->new); loops_per_jiffy = cpufreq_scale(l_p_j_ref, l_p_j_ref_freq,
dprintk("scaling loops_per_jiffy to %lu for frequency %u kHz\n", loops_per_jiffy, ci->new); ci->new);
dprintk("scaling loops_per_jiffy to %lu"
"for frequency %u kHz\n", loops_per_jiffy, ci->new);
} }
} }
#else #else
static inline void adjust_jiffies(unsigned long val, struct cpufreq_freqs *ci) { return; } static inline void adjust_jiffies(unsigned long val, struct cpufreq_freqs *ci)
{
return;
}
#endif #endif
@ -316,7 +328,8 @@ static int cpufreq_parse_governor (char *str_governor, unsigned int *policy,
if (!strnicmp(str_governor, "performance", CPUFREQ_NAME_LEN)) { if (!strnicmp(str_governor, "performance", CPUFREQ_NAME_LEN)) {
*policy = CPUFREQ_POLICY_PERFORMANCE; *policy = CPUFREQ_POLICY_PERFORMANCE;
err = 0; err = 0;
} else if (!strnicmp(str_governor, "powersave", CPUFREQ_NAME_LEN)) { } else if (!strnicmp(str_governor, "powersave",
CPUFREQ_NAME_LEN)) {
*policy = CPUFREQ_POLICY_POWERSAVE; *policy = CPUFREQ_POLICY_POWERSAVE;
err = 0; err = 0;
} }
@ -328,7 +341,8 @@ static int cpufreq_parse_governor (char *str_governor, unsigned int *policy,
t = __find_governor(str_governor); t = __find_governor(str_governor);
if (t == NULL) { if (t == NULL) {
char *name = kasprintf(GFP_KERNEL, "cpufreq_%s", str_governor); char *name = kasprintf(GFP_KERNEL, "cpufreq_%s",
str_governor);
if (name) { if (name) {
int ret; int ret;
@ -361,7 +375,8 @@ extern struct sysdev_class cpu_sysdev_class;
/** /**
* cpufreq_per_cpu_attr_read() / show_##file_name() - print out cpufreq information * cpufreq_per_cpu_attr_read() / show_##file_name() -
* print out cpufreq information
* *
* Write out information from cpufreq_driver->policy[cpu]; object must be * Write out information from cpufreq_driver->policy[cpu]; object must be
* "unsigned int". * "unsigned int".
@ -380,7 +395,8 @@ show_one(scaling_min_freq, min);
show_one(scaling_max_freq, max); show_one(scaling_max_freq, max);
show_one(scaling_cur_freq, cur); show_one(scaling_cur_freq, cur);
static int __cpufreq_set_policy(struct cpufreq_policy *data, struct cpufreq_policy *policy); static int __cpufreq_set_policy(struct cpufreq_policy *data,
struct cpufreq_policy *policy);
/** /**
* cpufreq_per_cpu_attr_write() / store_##file_name() - sysfs write access * cpufreq_per_cpu_attr_write() / store_##file_name() - sysfs write access
@ -416,7 +432,8 @@ store_one(scaling_max_freq,max);
/** /**
* show_cpuinfo_cur_freq - current CPU frequency as detected by hardware * show_cpuinfo_cur_freq - current CPU frequency as detected by hardware
*/ */
static ssize_t show_cpuinfo_cur_freq (struct cpufreq_policy * policy, char *buf) static ssize_t show_cpuinfo_cur_freq (struct cpufreq_policy * policy,
char *buf)
{ {
unsigned int cur_freq = cpufreq_get(policy->cpu); unsigned int cur_freq = cpufreq_get(policy->cpu);
if (!cur_freq) if (!cur_freq)
@ -428,7 +445,8 @@ static ssize_t show_cpuinfo_cur_freq (struct cpufreq_policy * policy, char *buf)
/** /**
* show_scaling_governor - show the current policy for the specified CPU * show_scaling_governor - show the current policy for the specified CPU
*/ */
static ssize_t show_scaling_governor (struct cpufreq_policy * policy, char *buf) 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"); return sprintf(buf, "powersave\n");
@ -458,7 +476,8 @@ static ssize_t store_scaling_governor (struct cpufreq_policy * policy,
if (ret != 1) if (ret != 1)
return -EINVAL; return -EINVAL;
if (cpufreq_parse_governor(str_governor, &new_policy.policy, &new_policy.governor)) if (cpufreq_parse_governor(str_governor, &new_policy.policy,
&new_policy.governor))
return -EINVAL; return -EINVAL;
lock_cpu_hotplug(); lock_cpu_hotplug();
@ -474,7 +493,10 @@ static ssize_t store_scaling_governor (struct cpufreq_policy * policy,
unlock_cpu_hotplug(); unlock_cpu_hotplug();
return ret ? ret : count; if (ret)
return ret;
else
return count;
} }
/** /**
@ -488,7 +510,7 @@ static ssize_t show_scaling_driver (struct cpufreq_policy * policy, char *buf)
/** /**
* show_scaling_available_governors - show the available CPUfreq governors * show_scaling_available_governors - show the available CPUfreq governors
*/ */
static ssize_t show_scaling_available_governors (struct cpufreq_policy * policy, static ssize_t show_scaling_available_governors (struct cpufreq_policy *policy,
char *buf) char *buf)
{ {
ssize_t i = 0; ssize_t i = 0;
@ -574,7 +596,11 @@ static ssize_t show(struct kobject * kobj, struct attribute * attr ,char * buf)
policy = cpufreq_cpu_get(policy->cpu); policy = cpufreq_cpu_get(policy->cpu);
if (!policy) if (!policy)
return -EINVAL; return -EINVAL;
ret = fattr->show ? fattr->show(policy,buf) : -EIO; if (fattr->show)
ret = fattr->show(policy, buf);
else
ret = -EIO;
cpufreq_cpu_put(policy); cpufreq_cpu_put(policy);
return ret; return ret;
} }
@ -588,7 +614,11 @@ static ssize_t store(struct kobject * kobj, struct attribute * attr,
policy = cpufreq_cpu_get(policy->cpu); policy = cpufreq_cpu_get(policy->cpu);
if (!policy) if (!policy)
return -EINVAL; return -EINVAL;
ret = fattr->store ? fattr->store(policy,buf,count) : -EIO; if (fattr->store)
ret = fattr->store(policy, buf, count);
else
ret = -EIO;
cpufreq_cpu_put(policy); cpufreq_cpu_put(policy);
return ret; return ret;
} }
@ -911,7 +941,8 @@ static void handle_update(void *data)
* We adjust to current frequency first, and need to clean up later. So either call * We adjust to current frequency first, and need to clean up later. So either call
* to cpufreq_update_policy() or schedule handle_update()). * 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) static void cpufreq_out_of_sync(unsigned int cpu, unsigned int old_freq,
unsigned int new_freq)
{ {
struct cpufreq_freqs freqs; struct cpufreq_freqs freqs;
@ -936,16 +967,16 @@ static void cpufreq_out_of_sync(unsigned int cpu, unsigned int old_freq, unsigne
unsigned int cpufreq_quick_get(unsigned int cpu) unsigned int cpufreq_quick_get(unsigned int cpu)
{ {
struct cpufreq_policy *policy = cpufreq_cpu_get(cpu); struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
unsigned int ret = 0; unsigned int ret_freq = 0;
if (policy) { if (policy) {
mutex_lock(&policy->lock); mutex_lock(&policy->lock);
ret = policy->cur; ret_freq = policy->cur;
mutex_unlock(&policy->lock); mutex_unlock(&policy->lock);
cpufreq_cpu_put(policy); cpufreq_cpu_put(policy);
} }
return (ret); return (ret_freq);
} }
EXPORT_SYMBOL(cpufreq_quick_get); EXPORT_SYMBOL(cpufreq_quick_get);
@ -959,7 +990,7 @@ EXPORT_SYMBOL(cpufreq_quick_get);
unsigned int cpufreq_get(unsigned int cpu) unsigned int cpufreq_get(unsigned int cpu)
{ {
struct cpufreq_policy *policy = cpufreq_cpu_get(cpu); struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
unsigned int ret = 0; unsigned int ret_freq = 0;
if (!policy) if (!policy)
return 0; return 0;
@ -969,12 +1000,14 @@ unsigned int cpufreq_get(unsigned int cpu)
mutex_lock(&policy->lock); mutex_lock(&policy->lock);
ret = cpufreq_driver->get(cpu); ret_freq = cpufreq_driver->get(cpu);
if (ret && policy->cur && !(cpufreq_driver->flags & CPUFREQ_CONST_LOOPS)) { if (ret_freq && policy->cur &&
/* verify no discrepancy between actual and saved value exists */ !(cpufreq_driver->flags & CPUFREQ_CONST_LOOPS)) {
if (unlikely(ret != policy->cur)) { /* verify no discrepancy between actual and
cpufreq_out_of_sync(cpu, policy->cur, ret); saved value exists */
if (unlikely(ret_freq != policy->cur)) {
cpufreq_out_of_sync(cpu, policy->cur, ret_freq);
schedule_work(&policy->update); schedule_work(&policy->update);
} }
} }
@ -984,7 +1017,7 @@ unsigned int cpufreq_get(unsigned int cpu)
out: out:
cpufreq_cpu_put(policy); cpufreq_cpu_put(policy);
return (ret); return (ret_freq);
} }
EXPORT_SYMBOL(cpufreq_get); EXPORT_SYMBOL(cpufreq_get);
@ -996,7 +1029,7 @@ EXPORT_SYMBOL(cpufreq_get);
static int cpufreq_suspend(struct sys_device * sysdev, pm_message_t pmsg) static int cpufreq_suspend(struct sys_device * sysdev, pm_message_t pmsg)
{ {
int cpu = sysdev->id; int cpu = sysdev->id;
unsigned int ret = 0; int ret = 0;
unsigned int cur_freq = 0; unsigned int cur_freq = 0;
struct cpufreq_policy *cpu_policy; struct cpufreq_policy *cpu_policy;
@ -1078,7 +1111,7 @@ static int cpufreq_suspend(struct sys_device * sysdev, pm_message_t pmsg)
static int cpufreq_resume(struct sys_device * sysdev) static int cpufreq_resume(struct sys_device * sysdev)
{ {
int cpu = sysdev->id; int cpu = sysdev->id;
unsigned int ret = 0; int ret = 0;
struct cpufreq_policy *cpu_policy; struct cpufreq_policy *cpu_policy;
dprintk("resuming cpu %u\n", cpu); dprintk("resuming cpu %u\n", cpu);
@ -1299,17 +1332,20 @@ EXPORT_SYMBOL_GPL(cpufreq_driver_getavg);
* when "event" is CPUFREQ_GOV_LIMITS * when "event" is CPUFREQ_GOV_LIMITS
*/ */
static int __cpufreq_governor(struct cpufreq_policy *policy, unsigned int event) static int __cpufreq_governor(struct cpufreq_policy *policy,
unsigned int event)
{ {
int ret; int ret;
if (!try_module_get(policy->governor->owner)) if (!try_module_get(policy->governor->owner))
return -EINVAL; return -EINVAL;
dprintk("__cpufreq_governor for CPU %u, event %u\n", policy->cpu, event); dprintk("__cpufreq_governor for CPU %u, event %u\n",
policy->cpu, event);
ret = policy->governor->governor(policy, event); ret = policy->governor->governor(policy, event);
/* we keep one module reference alive for each CPU governed by this CPU */ /* we keep one module reference alive for
each CPU governed by this CPU */
if ((event != CPUFREQ_GOV_START) || ret) if ((event != CPUFREQ_GOV_START) || ret)
module_put(policy->governor->owner); module_put(policy->governor->owner);
if ((event == CPUFREQ_GOV_STOP) && !ret) if ((event == CPUFREQ_GOV_STOP) && !ret)
@ -1385,9 +1421,12 @@ EXPORT_SYMBOL(cpufreq_get_policy);
/* /*
* data : current policy.
* policy : policy to be set.
* Locking: Must be called with the lock_cpu_hotplug() lock held * Locking: Must be called with the lock_cpu_hotplug() lock held
*/ */
static int __cpufreq_set_policy(struct cpufreq_policy *data, struct cpufreq_policy *policy) static int __cpufreq_set_policy(struct cpufreq_policy *data,
struct cpufreq_policy *policy)
{ {
int ret = 0; int ret = 0;
@ -1395,7 +1434,8 @@ static int __cpufreq_set_policy(struct cpufreq_policy *data, struct cpufreq_poli
dprintk("setting new policy for CPU %u: %u - %u kHz\n", policy->cpu, dprintk("setting new policy for CPU %u: %u - %u kHz\n", policy->cpu,
policy->min, policy->max); policy->min, policy->max);
memcpy(&policy->cpuinfo, &data->cpuinfo, sizeof(struct cpufreq_cpuinfo)); memcpy(&policy->cpuinfo, &data->cpuinfo,
sizeof(struct cpufreq_cpuinfo));
if (policy->min > data->min && policy->min > policy->max) { if (policy->min > data->min && policy->min > policy->max) {
ret = -EINVAL; ret = -EINVAL;
@ -1428,7 +1468,8 @@ static int __cpufreq_set_policy(struct cpufreq_policy *data, struct cpufreq_poli
data->min = policy->min; data->min = policy->min;
data->max = policy->max; data->max = policy->max;
dprintk("new min and max freqs are %u - %u kHz\n", data->min, data->max); dprintk("new min and max freqs are %u - %u kHz\n",
data->min, data->max);
if (cpufreq_driver->setpolicy) { if (cpufreq_driver->setpolicy) {
data->policy = policy->policy; data->policy = policy->policy;
@ -1449,10 +1490,12 @@ static int __cpufreq_set_policy(struct cpufreq_policy *data, struct cpufreq_poli
data->governor = policy->governor; data->governor = policy->governor;
if (__cpufreq_governor(data, CPUFREQ_GOV_START)) { if (__cpufreq_governor(data, CPUFREQ_GOV_START)) {
/* new governor failed, so re-start old one */ /* new governor failed, so re-start old one */
dprintk("starting governor %s failed\n", data->governor->name); dprintk("starting governor %s failed\n",
data->governor->name);
if (old_gov) { if (old_gov) {
data->governor = old_gov; data->governor = old_gov;
__cpufreq_governor(data, CPUFREQ_GOV_START); __cpufreq_governor(data,
CPUFREQ_GOV_START);
} }
ret = -EINVAL; ret = -EINVAL;
goto error_out; goto error_out;
@ -1542,7 +1585,8 @@ int cpufreq_update_policy(unsigned int cpu)
data->cur = policy.cur; data->cur = policy.cur;
} else { } else {
if (data->cur != policy.cur) if (data->cur != policy.cur)
cpufreq_out_of_sync(cpu, data->cur, policy.cur); cpufreq_out_of_sync(cpu, data->cur,
policy.cur);
} }
} }
@ -1646,8 +1690,10 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data)
/* if all ->init() calls failed, unregister */ /* if all ->init() calls failed, unregister */
if (ret) { if (ret) {
dprintk("no CPU initialized for driver %s\n", driver_data->name); dprintk("no CPU initialized for driver %s\n",
sysdev_driver_unregister(&cpu_sysdev_class, &cpufreq_sysdev_driver); driver_data->name);
sysdev_driver_unregister(&cpu_sysdev_class,
&cpufreq_sysdev_driver);
spin_lock_irqsave(&cpufreq_driver_lock, flags); spin_lock_irqsave(&cpufreq_driver_lock, flags);
cpufreq_driver = NULL; cpufreq_driver = NULL;

View file

@ -44,15 +44,17 @@
* latency of the processor. The governor will work on any processor with * latency of the processor. The governor will work on any processor with
* transition latency <= 10mS, using appropriate sampling * transition latency <= 10mS, using appropriate sampling
* rate. * rate.
* For CPUs with transition latency > 10mS (mostly drivers with CPUFREQ_ETERNAL) * For CPUs with transition latency > 10mS (mostly drivers
* this governor will not work. * with CPUFREQ_ETERNAL), this governor will not work.
* All times here are in uS. * All times here are in uS.
*/ */
static unsigned int def_sampling_rate; static unsigned int def_sampling_rate;
#define MIN_SAMPLING_RATE_RATIO (2) #define MIN_SAMPLING_RATE_RATIO (2)
/* for correct statistics, we need at least 10 ticks between each measure */ /* for correct statistics, we need at least 10 ticks between each measure */
#define MIN_STAT_SAMPLING_RATE (MIN_SAMPLING_RATE_RATIO * jiffies_to_usecs(10)) #define MIN_STAT_SAMPLING_RATE \
#define MIN_SAMPLING_RATE (def_sampling_rate / MIN_SAMPLING_RATE_RATIO) (MIN_SAMPLING_RATE_RATIO * jiffies_to_usecs(10))
#define MIN_SAMPLING_RATE \
(def_sampling_rate / MIN_SAMPLING_RATE_RATIO)
#define MAX_SAMPLING_RATE (500 * def_sampling_rate) #define MAX_SAMPLING_RATE (500 * def_sampling_rate)
#define DEF_SAMPLING_RATE_LATENCY_MULTIPLIER (1000) #define DEF_SAMPLING_RATE_LATENCY_MULTIPLIER (1000)
#define DEF_SAMPLING_DOWN_FACTOR (1) #define DEF_SAMPLING_DOWN_FACTOR (1)
@ -103,11 +105,16 @@ static struct dbs_tuners dbs_tuners_ins = {
static inline unsigned int get_cpu_idle_time(unsigned int cpu) static inline unsigned int get_cpu_idle_time(unsigned int cpu)
{ {
return kstat_cpu(cpu).cpustat.idle + unsigned int add_nice = 0, ret;
if (dbs_tuners_ins.ignore_nice)
add_nice = kstat_cpu(cpu).cpustat.nice;
ret = kstat_cpu(cpu).cpustat.idle +
kstat_cpu(cpu).cpustat.iowait + kstat_cpu(cpu).cpustat.iowait +
( dbs_tuners_ins.ignore_nice ? add_nice;
kstat_cpu(cpu).cpustat.nice :
0); return ret;
} }
/************************** sysfs interface ************************/ /************************** sysfs interface ************************/

View file

@ -41,8 +41,10 @@
static unsigned int def_sampling_rate; static unsigned int def_sampling_rate;
#define MIN_SAMPLING_RATE_RATIO (2) #define MIN_SAMPLING_RATE_RATIO (2)
/* for correct statistics, we need at least 10 ticks between each measure */ /* for correct statistics, we need at least 10 ticks between each measure */
#define MIN_STAT_SAMPLING_RATE (MIN_SAMPLING_RATE_RATIO * jiffies_to_usecs(10)) #define MIN_STAT_SAMPLING_RATE \
#define MIN_SAMPLING_RATE (def_sampling_rate / MIN_SAMPLING_RATE_RATIO) (MIN_SAMPLING_RATE_RATIO * jiffies_to_usecs(10))
#define MIN_SAMPLING_RATE \
(def_sampling_rate / MIN_SAMPLING_RATE_RATIO)
#define MAX_SAMPLING_RATE (500 * def_sampling_rate) #define MAX_SAMPLING_RATE (500 * def_sampling_rate)
#define DEF_SAMPLING_RATE_LATENCY_MULTIPLIER (1000) #define DEF_SAMPLING_RATE_LATENCY_MULTIPLIER (1000)
#define TRANSITION_LATENCY_LIMIT (10 * 1000) #define TRANSITION_LATENCY_LIMIT (10 * 1000)
@ -202,7 +204,8 @@ static ssize_t store_sampling_rate(struct cpufreq_policy *unused,
ret = sscanf(buf, "%u", &input); ret = sscanf(buf, "%u", &input);
mutex_lock(&dbs_mutex); mutex_lock(&dbs_mutex);
if (ret != 1 || input > MAX_SAMPLING_RATE || input < MIN_SAMPLING_RATE) { if (ret != 1 || input > MAX_SAMPLING_RATE
|| input < MIN_SAMPLING_RATE) {
mutex_unlock(&dbs_mutex); mutex_unlock(&dbs_mutex);
return -EINVAL; return -EINVAL;
} }
@ -496,7 +499,8 @@ static int cpufreq_governor_dbs(struct cpufreq_policy *policy,
if (dbs_enable == 1) { if (dbs_enable == 1) {
kondemand_wq = create_workqueue("kondemand"); kondemand_wq = create_workqueue("kondemand");
if (!kondemand_wq) { if (!kondemand_wq) {
printk(KERN_ERR "Creation of kondemand failed\n"); printk(KERN_ERR
"Creation of kondemand failed\n");
dbs_enable--; dbs_enable--;
mutex_unlock(&dbs_mutex); mutex_unlock(&dbs_mutex);
return -ENOSPC; return -ENOSPC;

View file

@ -15,7 +15,8 @@
#include <linux/cpufreq.h> #include <linux/cpufreq.h>
#include <linux/init.h> #include <linux/init.h>
#define dprintk(msg...) cpufreq_debug_printk(CPUFREQ_DEBUG_GOVERNOR, "performance", msg) #define dprintk(msg...) \
cpufreq_debug_printk(CPUFREQ_DEBUG_GOVERNOR, "performance", msg)
static int cpufreq_governor_performance(struct cpufreq_policy *policy, static int cpufreq_governor_performance(struct cpufreq_policy *policy,
@ -24,8 +25,10 @@ static int cpufreq_governor_performance(struct cpufreq_policy *policy,
switch (event) { switch (event) {
case CPUFREQ_GOV_START: case CPUFREQ_GOV_START:
case CPUFREQ_GOV_LIMITS: case CPUFREQ_GOV_LIMITS:
dprintk("setting to %u kHz because of event %u\n", policy->max, event); dprintk("setting to %u kHz because of event %u\n",
__cpufreq_driver_target(policy, policy->max, CPUFREQ_RELATION_H); policy->max, event);
__cpufreq_driver_target(policy, policy->max,
CPUFREQ_RELATION_H);
break; break;
default: default:
break; break;

View file

@ -15,7 +15,8 @@
#include <linux/cpufreq.h> #include <linux/cpufreq.h>
#include <linux/init.h> #include <linux/init.h>
#define dprintk(msg...) cpufreq_debug_printk(CPUFREQ_DEBUG_GOVERNOR, "powersave", msg) #define dprintk(msg...) \
cpufreq_debug_printk(CPUFREQ_DEBUG_GOVERNOR, "powersave", msg)
static int cpufreq_governor_powersave(struct cpufreq_policy *policy, static int cpufreq_governor_powersave(struct cpufreq_policy *policy,
unsigned int event) unsigned int event)
@ -23,8 +24,10 @@ static int cpufreq_governor_powersave(struct cpufreq_policy *policy,
switch (event) { switch (event) {
case CPUFREQ_GOV_START: case CPUFREQ_GOV_START:
case CPUFREQ_GOV_LIMITS: case CPUFREQ_GOV_LIMITS:
dprintk("setting to %u kHz because of event %u\n", policy->min, event); dprintk("setting to %u kHz because of event %u\n",
__cpufreq_driver_target(policy, policy->min, CPUFREQ_RELATION_L); policy->min, event);
__cpufreq_driver_target(policy, policy->min,
CPUFREQ_RELATION_L);
break; break;
default: default:
break; break;

View file

@ -351,8 +351,8 @@ __init cpufreq_stats_init(void)
register_hotcpu_notifier(&cpufreq_stat_cpu_notifier); register_hotcpu_notifier(&cpufreq_stat_cpu_notifier);
for_each_online_cpu(cpu) { for_each_online_cpu(cpu) {
cpufreq_stat_cpu_callback(&cpufreq_stat_cpu_notifier, CPU_ONLINE, cpufreq_stat_cpu_callback(&cpufreq_stat_cpu_notifier,
(void *)(long)cpu); CPU_ONLINE, (void *)(long)cpu);
} }
return 0; return 0;
} }
@ -368,14 +368,15 @@ __exit cpufreq_stats_exit(void)
unregister_hotcpu_notifier(&cpufreq_stat_cpu_notifier); unregister_hotcpu_notifier(&cpufreq_stat_cpu_notifier);
lock_cpu_hotplug(); lock_cpu_hotplug();
for_each_online_cpu(cpu) { for_each_online_cpu(cpu) {
cpufreq_stat_cpu_callback(&cpufreq_stat_cpu_notifier, CPU_DEAD, cpufreq_stat_cpu_callback(&cpufreq_stat_cpu_notifier,
(void *)(long)cpu); CPU_DEAD, (void *)(long)cpu);
} }
unlock_cpu_hotplug(); unlock_cpu_hotplug();
} }
MODULE_AUTHOR ("Zou Nan hai <nanhai.zou@intel.com>"); MODULE_AUTHOR ("Zou Nan hai <nanhai.zou@intel.com>");
MODULE_DESCRIPTION ("'cpufreq_stats' - A driver to export cpufreq stats through sysfs filesystem"); MODULE_DESCRIPTION ("'cpufreq_stats' - A driver to export cpufreq stats"
"through sysfs filesystem");
MODULE_LICENSE ("GPL"); MODULE_LICENSE ("GPL");
module_init(cpufreq_stats_init); module_init(cpufreq_stats_init);

View file

@ -9,7 +9,8 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/cpufreq.h> #include <linux/cpufreq.h>
#define dprintk(msg...) cpufreq_debug_printk(CPUFREQ_DEBUG_CORE, "freq-table", msg) #define dprintk(msg...) \
cpufreq_debug_printk(CPUFREQ_DEBUG_CORE, "freq-table", msg)
/********************************************************************* /*********************************************************************
* FREQUENCY TABLE HELPERS * * FREQUENCY TABLE HELPERS *
@ -29,7 +30,8 @@ int cpufreq_frequency_table_cpuinfo(struct cpufreq_policy *policy,
continue; continue;
} }
dprintk("table entry %u: %u kHz, %u index\n", i, freq, table[i].index); dprintk("table entry %u: %u kHz, %u index\n",
i, freq, table[i].index);
if (freq < min_freq) if (freq < min_freq)
min_freq = freq; min_freq = freq;
if (freq > max_freq) if (freq > max_freq)
@ -54,13 +56,14 @@ int cpufreq_frequency_table_verify(struct cpufreq_policy *policy,
unsigned int i; unsigned int i;
unsigned int count = 0; unsigned int count = 0;
dprintk("request for verification of policy (%u - %u kHz) for cpu %u\n", policy->min, policy->max, policy->cpu); dprintk("request for verification of policy (%u - %u kHz) for cpu %u\n",
policy->min, policy->max, policy->cpu);
if (!cpu_online(policy->cpu)) if (!cpu_online(policy->cpu))
return -EINVAL; return -EINVAL;
cpufreq_verify_within_limits(policy, cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
policy->cpuinfo.min_freq, policy->cpuinfo.max_freq); policy->cpuinfo.max_freq);
for (i=0; (table[i].frequency != CPUFREQ_TABLE_END); i++) { for (i=0; (table[i].frequency != CPUFREQ_TABLE_END); i++) {
unsigned int freq = table[i].frequency; unsigned int freq = table[i].frequency;
@ -75,10 +78,11 @@ int cpufreq_frequency_table_verify(struct cpufreq_policy *policy,
if (!count) if (!count)
policy->max = next_larger; policy->max = next_larger;
cpufreq_verify_within_limits(policy, cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
policy->cpuinfo.min_freq, policy->cpuinfo.max_freq); policy->cpuinfo.max_freq);
dprintk("verification lead to (%u - %u kHz) for cpu %u\n", policy->min, policy->max, policy->cpu); dprintk("verification lead to (%u - %u kHz) for cpu %u\n",
policy->min, policy->max, policy->cpu);
return 0; return 0;
} }
@ -101,7 +105,8 @@ int cpufreq_frequency_table_target(struct cpufreq_policy *policy,
}; };
unsigned int i; unsigned int i;
dprintk("request for target %u kHz (relation: %u) for cpu %u\n", target_freq, relation, policy->cpu); dprintk("request for target %u kHz (relation: %u) for cpu %u\n",
target_freq, relation, policy->cpu);
switch (relation) { switch (relation) {
case CPUFREQ_RELATION_H: case CPUFREQ_RELATION_H:
@ -192,7 +197,10 @@ static ssize_t show_available_freqs (struct cpufreq_policy *policy, char *buf)
} }
struct freq_attr cpufreq_freq_attr_scaling_available_freqs = { struct freq_attr cpufreq_freq_attr_scaling_available_freqs = {
.attr = { .name = "scaling_available_frequencies", .mode = 0444, .owner=THIS_MODULE }, .attr = { .name = "scaling_available_frequencies",
.mode = 0444,
.owner=THIS_MODULE
},
.show = show_available_freqs, .show = show_available_freqs,
}; };
EXPORT_SYMBOL_GPL(cpufreq_freq_attr_scaling_available_freqs); EXPORT_SYMBOL_GPL(cpufreq_freq_attr_scaling_available_freqs);