Commit 326c86de authored by Thomas Renninger's avatar Thomas Renninger Committed by Dave Jones

[CPUFREQ] Remove unneeded locks

There cannot be any concurrent access to these through
different cpu sysfs files anymore, because these tunables
are now all global (not per cpu).

I still have some doubts whether some of these locks
were needed at all. Anyway, let's get rid of them.
Signed-off-by: default avatarThomas Renninger <trenn@suse.de>
Signed-off-by: default avatarDave Jones <davej@redhat.com>
CC: cpufreq@vger.kernel.org
parent e8951251
...@@ -76,8 +76,7 @@ static DEFINE_PER_CPU(struct cpu_dbs_info_s, cs_cpu_dbs_info); ...@@ -76,8 +76,7 @@ static DEFINE_PER_CPU(struct cpu_dbs_info_s, cs_cpu_dbs_info);
static unsigned int dbs_enable; /* number of CPUs using this policy */ static unsigned int dbs_enable; /* number of CPUs using this policy */
/* /*
* dbs_mutex protects data in dbs_tuners_ins from concurrent changes on * dbs_mutex protects dbs_enable in governor start/stop.
* different CPUs. It protects dbs_enable in governor start/stop.
*/ */
static DEFINE_MUTEX(dbs_mutex); static DEFINE_MUTEX(dbs_mutex);
...@@ -195,10 +194,7 @@ static ssize_t store_sampling_down_factor(struct kobject *a, ...@@ -195,10 +194,7 @@ static ssize_t store_sampling_down_factor(struct kobject *a,
if (ret != 1 || input > MAX_SAMPLING_DOWN_FACTOR || input < 1) if (ret != 1 || input > MAX_SAMPLING_DOWN_FACTOR || input < 1)
return -EINVAL; return -EINVAL;
mutex_lock(&dbs_mutex);
dbs_tuners_ins.sampling_down_factor = input; dbs_tuners_ins.sampling_down_factor = input;
mutex_unlock(&dbs_mutex);
return count; return count;
} }
...@@ -212,10 +208,7 @@ static ssize_t store_sampling_rate(struct kobject *a, struct attribute *b, ...@@ -212,10 +208,7 @@ static ssize_t store_sampling_rate(struct kobject *a, struct attribute *b,
if (ret != 1) if (ret != 1)
return -EINVAL; return -EINVAL;
mutex_lock(&dbs_mutex);
dbs_tuners_ins.sampling_rate = max(input, min_sampling_rate); dbs_tuners_ins.sampling_rate = max(input, min_sampling_rate);
mutex_unlock(&dbs_mutex);
return count; return count;
} }
...@@ -226,16 +219,11 @@ static ssize_t store_up_threshold(struct kobject *a, struct attribute *b, ...@@ -226,16 +219,11 @@ static ssize_t store_up_threshold(struct kobject *a, struct attribute *b,
int ret; int ret;
ret = sscanf(buf, "%u", &input); ret = sscanf(buf, "%u", &input);
mutex_lock(&dbs_mutex);
if (ret != 1 || input > 100 || if (ret != 1 || input > 100 ||
input <= dbs_tuners_ins.down_threshold) { input <= dbs_tuners_ins.down_threshold)
mutex_unlock(&dbs_mutex);
return -EINVAL; return -EINVAL;
}
dbs_tuners_ins.up_threshold = input; dbs_tuners_ins.up_threshold = input;
mutex_unlock(&dbs_mutex);
return count; return count;
} }
...@@ -246,17 +234,12 @@ static ssize_t store_down_threshold(struct kobject *a, struct attribute *b, ...@@ -246,17 +234,12 @@ static ssize_t store_down_threshold(struct kobject *a, struct attribute *b,
int ret; int ret;
ret = sscanf(buf, "%u", &input); ret = sscanf(buf, "%u", &input);
mutex_lock(&dbs_mutex);
/* cannot be lower than 11 otherwise freq will not fall */ /* cannot be lower than 11 otherwise freq will not fall */
if (ret != 1 || input < 11 || input > 100 || if (ret != 1 || input < 11 || input > 100 ||
input >= dbs_tuners_ins.up_threshold) { input >= dbs_tuners_ins.up_threshold)
mutex_unlock(&dbs_mutex);
return -EINVAL; return -EINVAL;
}
dbs_tuners_ins.down_threshold = input; dbs_tuners_ins.down_threshold = input;
mutex_unlock(&dbs_mutex);
return count; return count;
} }
...@@ -275,11 +258,9 @@ static ssize_t store_ignore_nice_load(struct kobject *a, struct attribute *b, ...@@ -275,11 +258,9 @@ static ssize_t store_ignore_nice_load(struct kobject *a, struct attribute *b,
if (input > 1) if (input > 1)
input = 1; input = 1;
mutex_lock(&dbs_mutex); if (input == dbs_tuners_ins.ignore_nice) /* nothing to do */
if (input == dbs_tuners_ins.ignore_nice) { /* nothing to do */
mutex_unlock(&dbs_mutex);
return count; return count;
}
dbs_tuners_ins.ignore_nice = input; dbs_tuners_ins.ignore_nice = input;
/* we need to re-evaluate prev_cpu_idle */ /* we need to re-evaluate prev_cpu_idle */
...@@ -291,8 +272,6 @@ static ssize_t store_ignore_nice_load(struct kobject *a, struct attribute *b, ...@@ -291,8 +272,6 @@ static ssize_t store_ignore_nice_load(struct kobject *a, struct attribute *b,
if (dbs_tuners_ins.ignore_nice) if (dbs_tuners_ins.ignore_nice)
dbs_info->prev_cpu_nice = kstat_cpu(j).cpustat.nice; dbs_info->prev_cpu_nice = kstat_cpu(j).cpustat.nice;
} }
mutex_unlock(&dbs_mutex);
return count; return count;
} }
...@@ -311,10 +290,7 @@ static ssize_t store_freq_step(struct kobject *a, struct attribute *b, ...@@ -311,10 +290,7 @@ static ssize_t store_freq_step(struct kobject *a, struct attribute *b,
/* no need to test here if freq_step is zero as the user might actually /* no need to test here if freq_step is zero as the user might actually
* want this, they would be crazy though :) */ * want this, they would be crazy though :) */
mutex_lock(&dbs_mutex);
dbs_tuners_ins.freq_step = input; dbs_tuners_ins.freq_step = input;
mutex_unlock(&dbs_mutex);
return count; return count;
} }
......
...@@ -99,8 +99,7 @@ static DEFINE_PER_CPU(struct cpu_dbs_info_s, od_cpu_dbs_info); ...@@ -99,8 +99,7 @@ static DEFINE_PER_CPU(struct cpu_dbs_info_s, od_cpu_dbs_info);
static unsigned int dbs_enable; /* number of CPUs using this policy */ static unsigned int dbs_enable; /* number of CPUs using this policy */
/* /*
* dbs_mutex protects data in dbs_tuners_ins from concurrent changes on * dbs_mutex protects dbs_enable in governor start/stop.
* different CPUs. It protects dbs_enable in governor start/stop.
*/ */
static DEFINE_MUTEX(dbs_mutex); static DEFINE_MUTEX(dbs_mutex);
...@@ -265,11 +264,7 @@ static ssize_t store_sampling_rate(struct kobject *a, struct attribute *b, ...@@ -265,11 +264,7 @@ static ssize_t store_sampling_rate(struct kobject *a, struct attribute *b,
ret = sscanf(buf, "%u", &input); ret = sscanf(buf, "%u", &input);
if (ret != 1) if (ret != 1)
return -EINVAL; return -EINVAL;
mutex_lock(&dbs_mutex);
dbs_tuners_ins.sampling_rate = max(input, min_sampling_rate); dbs_tuners_ins.sampling_rate = max(input, min_sampling_rate);
mutex_unlock(&dbs_mutex);
return count; return count;
} }
...@@ -282,11 +277,7 @@ static ssize_t store_io_is_busy(struct kobject *a, struct attribute *b, ...@@ -282,11 +277,7 @@ static ssize_t store_io_is_busy(struct kobject *a, struct attribute *b,
ret = sscanf(buf, "%u", &input); ret = sscanf(buf, "%u", &input);
if (ret != 1) if (ret != 1)
return -EINVAL; return -EINVAL;
mutex_lock(&dbs_mutex);
dbs_tuners_ins.io_is_busy = !!input; dbs_tuners_ins.io_is_busy = !!input;
mutex_unlock(&dbs_mutex);
return count; return count;
} }
...@@ -301,11 +292,7 @@ static ssize_t store_up_threshold(struct kobject *a, struct attribute *b, ...@@ -301,11 +292,7 @@ static ssize_t store_up_threshold(struct kobject *a, struct attribute *b,
input < MIN_FREQUENCY_UP_THRESHOLD) { input < MIN_FREQUENCY_UP_THRESHOLD) {
return -EINVAL; return -EINVAL;
} }
mutex_lock(&dbs_mutex);
dbs_tuners_ins.up_threshold = input; dbs_tuners_ins.up_threshold = input;
mutex_unlock(&dbs_mutex);
return count; return count;
} }
...@@ -318,7 +305,6 @@ static ssize_t store_sampling_down_factor(struct kobject *a, ...@@ -318,7 +305,6 @@ static ssize_t store_sampling_down_factor(struct kobject *a,
if (ret != 1 || input > MAX_SAMPLING_DOWN_FACTOR || input < 1) if (ret != 1 || input > MAX_SAMPLING_DOWN_FACTOR || input < 1)
return -EINVAL; return -EINVAL;
mutex_lock(&dbs_mutex);
dbs_tuners_ins.sampling_down_factor = input; dbs_tuners_ins.sampling_down_factor = input;
/* Reset down sampling multiplier in case it was active */ /* Reset down sampling multiplier in case it was active */
...@@ -327,8 +313,6 @@ static ssize_t store_sampling_down_factor(struct kobject *a, ...@@ -327,8 +313,6 @@ static ssize_t store_sampling_down_factor(struct kobject *a,
dbs_info = &per_cpu(od_cpu_dbs_info, j); dbs_info = &per_cpu(od_cpu_dbs_info, j);
dbs_info->rate_mult = 1; dbs_info->rate_mult = 1;
} }
mutex_unlock(&dbs_mutex);
return count; return count;
} }
...@@ -347,9 +331,7 @@ static ssize_t store_ignore_nice_load(struct kobject *a, struct attribute *b, ...@@ -347,9 +331,7 @@ static ssize_t store_ignore_nice_load(struct kobject *a, struct attribute *b,
if (input > 1) if (input > 1)
input = 1; input = 1;
mutex_lock(&dbs_mutex);
if (input == dbs_tuners_ins.ignore_nice) { /* nothing to do */ if (input == dbs_tuners_ins.ignore_nice) { /* nothing to do */
mutex_unlock(&dbs_mutex);
return count; return count;
} }
dbs_tuners_ins.ignore_nice = input; dbs_tuners_ins.ignore_nice = input;
...@@ -364,8 +346,6 @@ static ssize_t store_ignore_nice_load(struct kobject *a, struct attribute *b, ...@@ -364,8 +346,6 @@ static ssize_t store_ignore_nice_load(struct kobject *a, struct attribute *b,
dbs_info->prev_cpu_nice = kstat_cpu(j).cpustat.nice; dbs_info->prev_cpu_nice = kstat_cpu(j).cpustat.nice;
} }
mutex_unlock(&dbs_mutex);
return count; return count;
} }
...@@ -382,11 +362,8 @@ static ssize_t store_powersave_bias(struct kobject *a, struct attribute *b, ...@@ -382,11 +362,8 @@ static ssize_t store_powersave_bias(struct kobject *a, struct attribute *b,
if (input > 1000) if (input > 1000)
input = 1000; input = 1000;
mutex_lock(&dbs_mutex);
dbs_tuners_ins.powersave_bias = input; dbs_tuners_ins.powersave_bias = input;
ondemand_powersave_bias_init(); ondemand_powersave_bias_init();
mutex_unlock(&dbs_mutex);
return count; return count;
} }
......
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