Commit c1200697 authored by Dave Jones's avatar Dave Jones

[CPUFREQ] Remove hotplug cpu crap

The hotplug CPU locking in cpufreq is horrendous.  No-one seems to care
enough to fix it, so just remove it so that the 99.9% of the real world
users of this code can use cpufreq without being bothered by warnings.
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarDave Jones <davej@redhat.com>
parent 86acd49a
...@@ -415,12 +415,10 @@ static ssize_t store_##file_name \ ...@@ -415,12 +415,10 @@ static ssize_t store_##file_name \
if (ret != 1) \ if (ret != 1) \
return -EINVAL; \ return -EINVAL; \
\ \
lock_cpu_hotplug(); \
mutex_lock(&policy->lock); \ mutex_lock(&policy->lock); \
ret = __cpufreq_set_policy(policy, &new_policy); \ ret = __cpufreq_set_policy(policy, &new_policy); \
policy->user_policy.object = policy->object; \ policy->user_policy.object = policy->object; \
mutex_unlock(&policy->lock); \ mutex_unlock(&policy->lock); \
unlock_cpu_hotplug(); \
\ \
return ret ? ret : count; \ return ret ? ret : count; \
} }
...@@ -479,8 +477,6 @@ static ssize_t store_scaling_governor (struct cpufreq_policy * policy, ...@@ -479,8 +477,6 @@ static ssize_t store_scaling_governor (struct cpufreq_policy * policy,
&new_policy.governor)) &new_policy.governor))
return -EINVAL; return -EINVAL;
lock_cpu_hotplug();
/* Do not use cpufreq_set_policy here or the user_policy.max /* Do not use cpufreq_set_policy here or the user_policy.max
will be wrongly overridden */ will be wrongly overridden */
mutex_lock(&policy->lock); mutex_lock(&policy->lock);
...@@ -490,8 +486,6 @@ static ssize_t store_scaling_governor (struct cpufreq_policy * policy, ...@@ -490,8 +486,6 @@ static ssize_t store_scaling_governor (struct cpufreq_policy * policy,
policy->user_policy.governor = policy->governor; policy->user_policy.governor = policy->governor;
mutex_unlock(&policy->lock); mutex_unlock(&policy->lock);
unlock_cpu_hotplug();
if (ret) if (ret)
return ret; return ret;
else else
...@@ -1278,7 +1272,6 @@ EXPORT_SYMBOL(cpufreq_unregister_notifier); ...@@ -1278,7 +1272,6 @@ EXPORT_SYMBOL(cpufreq_unregister_notifier);
*********************************************************************/ *********************************************************************/
/* Must be called with lock_cpu_hotplug held */
int __cpufreq_driver_target(struct cpufreq_policy *policy, int __cpufreq_driver_target(struct cpufreq_policy *policy,
unsigned int target_freq, unsigned int target_freq,
unsigned int relation) unsigned int relation)
...@@ -1304,13 +1297,11 @@ int cpufreq_driver_target(struct cpufreq_policy *policy, ...@@ -1304,13 +1297,11 @@ int cpufreq_driver_target(struct cpufreq_policy *policy,
if (!policy) if (!policy)
return -EINVAL; return -EINVAL;
lock_cpu_hotplug();
mutex_lock(&policy->lock); mutex_lock(&policy->lock);
ret = __cpufreq_driver_target(policy, target_freq, relation); ret = __cpufreq_driver_target(policy, target_freq, relation);
mutex_unlock(&policy->lock); mutex_unlock(&policy->lock);
unlock_cpu_hotplug();
cpufreq_cpu_put(policy); cpufreq_cpu_put(policy);
return ret; return ret;
...@@ -1338,7 +1329,6 @@ int cpufreq_driver_getavg(struct cpufreq_policy *policy) ...@@ -1338,7 +1329,6 @@ int cpufreq_driver_getavg(struct cpufreq_policy *policy)
EXPORT_SYMBOL_GPL(cpufreq_driver_getavg); EXPORT_SYMBOL_GPL(cpufreq_driver_getavg);
/* /*
* Locking: Must be called with the lock_cpu_hotplug() lock held
* when "event" is CPUFREQ_GOV_LIMITS * when "event" is CPUFREQ_GOV_LIMITS
*/ */
...@@ -1433,7 +1423,6 @@ EXPORT_SYMBOL(cpufreq_get_policy); ...@@ -1433,7 +1423,6 @@ EXPORT_SYMBOL(cpufreq_get_policy);
/* /*
* data : current policy. * data : current policy.
* policy : policy to be set. * policy : policy to be set.
* Locking: Must be called with the lock_cpu_hotplug() lock held
*/ */
static int __cpufreq_set_policy(struct cpufreq_policy *data, static int __cpufreq_set_policy(struct cpufreq_policy *data,
struct cpufreq_policy *policy) struct cpufreq_policy *policy)
...@@ -1539,8 +1528,6 @@ int cpufreq_set_policy(struct cpufreq_policy *policy) ...@@ -1539,8 +1528,6 @@ int cpufreq_set_policy(struct cpufreq_policy *policy)
if (!data) if (!data)
return -EINVAL; return -EINVAL;
lock_cpu_hotplug();
/* lock this CPU */ /* lock this CPU */
mutex_lock(&data->lock); mutex_lock(&data->lock);
...@@ -1552,7 +1539,6 @@ int cpufreq_set_policy(struct cpufreq_policy *policy) ...@@ -1552,7 +1539,6 @@ int cpufreq_set_policy(struct cpufreq_policy *policy)
mutex_unlock(&data->lock); mutex_unlock(&data->lock);
unlock_cpu_hotplug();
cpufreq_cpu_put(data); cpufreq_cpu_put(data);
return ret; return ret;
...@@ -1576,7 +1562,6 @@ int cpufreq_update_policy(unsigned int cpu) ...@@ -1576,7 +1562,6 @@ int cpufreq_update_policy(unsigned int cpu)
if (!data) if (!data)
return -ENODEV; return -ENODEV;
lock_cpu_hotplug();
mutex_lock(&data->lock); mutex_lock(&data->lock);
dprintk("updating policy for CPU %u\n", cpu); dprintk("updating policy for CPU %u\n", cpu);
...@@ -1603,7 +1588,6 @@ int cpufreq_update_policy(unsigned int cpu) ...@@ -1603,7 +1588,6 @@ int cpufreq_update_policy(unsigned int cpu)
ret = __cpufreq_set_policy(data, &policy); ret = __cpufreq_set_policy(data, &policy);
mutex_unlock(&data->lock); mutex_unlock(&data->lock);
unlock_cpu_hotplug();
cpufreq_cpu_put(data); cpufreq_cpu_put(data);
return ret; return ret;
} }
......
...@@ -430,14 +430,12 @@ static void dbs_check_cpu(int cpu) ...@@ -430,14 +430,12 @@ static void dbs_check_cpu(int cpu)
static void do_dbs_timer(struct work_struct *work) static void do_dbs_timer(struct work_struct *work)
{ {
int i; int i;
lock_cpu_hotplug();
mutex_lock(&dbs_mutex); mutex_lock(&dbs_mutex);
for_each_online_cpu(i) for_each_online_cpu(i)
dbs_check_cpu(i); dbs_check_cpu(i);
schedule_delayed_work(&dbs_work, schedule_delayed_work(&dbs_work,
usecs_to_jiffies(dbs_tuners_ins.sampling_rate)); usecs_to_jiffies(dbs_tuners_ins.sampling_rate));
mutex_unlock(&dbs_mutex); mutex_unlock(&dbs_mutex);
unlock_cpu_hotplug();
} }
static inline void dbs_timer_init(void) static inline void dbs_timer_init(void)
......
...@@ -440,9 +440,7 @@ static void do_dbs_timer(struct work_struct *work) ...@@ -440,9 +440,7 @@ static void do_dbs_timer(struct work_struct *work)
dbs_info->sample_type = DBS_NORMAL_SAMPLE; dbs_info->sample_type = DBS_NORMAL_SAMPLE;
if (!dbs_tuners_ins.powersave_bias || if (!dbs_tuners_ins.powersave_bias ||
sample_type == DBS_NORMAL_SAMPLE) { sample_type == DBS_NORMAL_SAMPLE) {
lock_cpu_hotplug();
dbs_check_cpu(dbs_info); dbs_check_cpu(dbs_info);
unlock_cpu_hotplug();
if (dbs_info->freq_lo) { if (dbs_info->freq_lo) {
/* Setup timer for SUB_SAMPLE */ /* Setup timer for SUB_SAMPLE */
dbs_info->sample_type = DBS_SUB_SAMPLE; dbs_info->sample_type = DBS_SUB_SAMPLE;
......
...@@ -370,12 +370,10 @@ __exit cpufreq_stats_exit(void) ...@@ -370,12 +370,10 @@ __exit cpufreq_stats_exit(void)
cpufreq_unregister_notifier(&notifier_trans_block, cpufreq_unregister_notifier(&notifier_trans_block,
CPUFREQ_TRANSITION_NOTIFIER); CPUFREQ_TRANSITION_NOTIFIER);
unregister_hotcpu_notifier(&cpufreq_stat_cpu_notifier); unregister_hotcpu_notifier(&cpufreq_stat_cpu_notifier);
lock_cpu_hotplug();
for_each_online_cpu(cpu) { for_each_online_cpu(cpu) {
cpufreq_stat_cpu_callback(&cpufreq_stat_cpu_notifier, cpufreq_stat_cpu_callback(&cpufreq_stat_cpu_notifier,
CPU_DEAD, (void *)(long)cpu); CPU_DEAD, (void *)(long)cpu);
} }
unlock_cpu_hotplug();
} }
MODULE_AUTHOR ("Zou Nan hai <nanhai.zou@intel.com>"); MODULE_AUTHOR ("Zou Nan hai <nanhai.zou@intel.com>");
......
...@@ -71,7 +71,6 @@ static int cpufreq_set(unsigned int freq, struct cpufreq_policy *policy) ...@@ -71,7 +71,6 @@ static int cpufreq_set(unsigned int freq, struct cpufreq_policy *policy)
dprintk("cpufreq_set for cpu %u, freq %u kHz\n", policy->cpu, freq); dprintk("cpufreq_set for cpu %u, freq %u kHz\n", policy->cpu, freq);
lock_cpu_hotplug();
mutex_lock(&userspace_mutex); mutex_lock(&userspace_mutex);
if (!cpu_is_managed[policy->cpu]) if (!cpu_is_managed[policy->cpu])
goto err; goto err;
...@@ -94,7 +93,6 @@ static int cpufreq_set(unsigned int freq, struct cpufreq_policy *policy) ...@@ -94,7 +93,6 @@ static int cpufreq_set(unsigned int freq, struct cpufreq_policy *policy)
err: err:
mutex_unlock(&userspace_mutex); mutex_unlock(&userspace_mutex);
unlock_cpu_hotplug();
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment