|
@@ -47,7 +47,7 @@ static unsigned int def_sampling_rate;
|
|
|
(def_sampling_rate / MIN_SAMPLING_RATE_RATIO)
|
|
|
#define MAX_SAMPLING_RATE (500 * def_sampling_rate)
|
|
|
#define DEF_SAMPLING_RATE_LATENCY_MULTIPLIER (1000)
|
|
|
-#define TRANSITION_LATENCY_LIMIT (10 * 1000)
|
|
|
+#define TRANSITION_LATENCY_LIMIT (10 * 1000 * 1000)
|
|
|
|
|
|
static void do_dbs_timer(struct work_struct *work);
|
|
|
|
|
@@ -508,12 +508,6 @@ static int cpufreq_governor_dbs(struct cpufreq_policy *policy,
|
|
|
if ((!cpu_online(cpu)) || (!policy->cur))
|
|
|
return -EINVAL;
|
|
|
|
|
|
- if (policy->cpuinfo.transition_latency >
|
|
|
- (TRANSITION_LATENCY_LIMIT * 1000)) {
|
|
|
- printk(KERN_WARNING "ondemand governor failed to load "
|
|
|
- "due to too long transition latency\n");
|
|
|
- return -EINVAL;
|
|
|
- }
|
|
|
if (this_dbs_info->enable) /* Already enabled */
|
|
|
break;
|
|
|
|
|
@@ -585,11 +579,13 @@ static int cpufreq_governor_dbs(struct cpufreq_policy *policy,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static struct cpufreq_governor cpufreq_gov_dbs = {
|
|
|
- .name = "ondemand",
|
|
|
- .governor = cpufreq_governor_dbs,
|
|
|
- .owner = THIS_MODULE,
|
|
|
+struct cpufreq_governor cpufreq_gov_ondemand = {
|
|
|
+ .name = "ondemand",
|
|
|
+ .governor = cpufreq_governor_dbs,
|
|
|
+ .max_transition_latency = TRANSITION_LATENCY_LIMIT,
|
|
|
+ .owner = THIS_MODULE,
|
|
|
};
|
|
|
+EXPORT_SYMBOL(cpufreq_gov_ondemand);
|
|
|
|
|
|
static int __init cpufreq_gov_dbs_init(void)
|
|
|
{
|
|
@@ -598,12 +594,12 @@ static int __init cpufreq_gov_dbs_init(void)
|
|
|
printk(KERN_ERR "Creation of kondemand failed\n");
|
|
|
return -EFAULT;
|
|
|
}
|
|
|
- return cpufreq_register_governor(&cpufreq_gov_dbs);
|
|
|
+ return cpufreq_register_governor(&cpufreq_gov_ondemand);
|
|
|
}
|
|
|
|
|
|
static void __exit cpufreq_gov_dbs_exit(void)
|
|
|
{
|
|
|
- cpufreq_unregister_governor(&cpufreq_gov_dbs);
|
|
|
+ cpufreq_unregister_governor(&cpufreq_gov_ondemand);
|
|
|
destroy_workqueue(kondemand_wq);
|
|
|
}
|
|
|
|