mirror of
https://github.com/fail0verflow/switch-linux.git
synced 2025-05-04 02:34:21 -04:00
[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: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Dave Jones <davej@redhat.com>
This commit is contained in:
parent
86acd49aa1
commit
c120069779
5 changed files with 0 additions and 24 deletions
|
@ -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,
|
||||||
&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,
|
||||||
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);
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
/* 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,
|
||||||
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)
|
||||||
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);
|
||||||
/*
|
/*
|
||||||
* 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)
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
cpufreq_unregister_notifier(¬ifier_trans_block,
|
cpufreq_unregister_notifier(¬ifier_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)
|
||||||
|
|
||||||
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)
|
||||||
|
|
||||||
err:
|
err:
|
||||||
mutex_unlock(&userspace_mutex);
|
mutex_unlock(&userspace_mutex);
|
||||||
unlock_cpu_hotplug();
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue