Commit 69fdadfd authored by Rafael J. Wysocki's avatar Rafael J. Wysocki

Merge branch 'pm-fixes'

* pm-fixes:
  cpufreq: rename ignore_nice as ignore_nice_load
  cpufreq: loongson2: fix regression related to clock management
parents 5ba1aef5 6c4640c3
...@@ -221,8 +221,8 @@ static ssize_t store_down_threshold(struct dbs_data *dbs_data, const char *buf, ...@@ -221,8 +221,8 @@ static ssize_t store_down_threshold(struct dbs_data *dbs_data, const char *buf,
return count; return count;
} }
static ssize_t store_ignore_nice(struct dbs_data *dbs_data, const char *buf, static ssize_t store_ignore_nice_load(struct dbs_data *dbs_data,
size_t count) const char *buf, size_t count)
{ {
struct cs_dbs_tuners *cs_tuners = dbs_data->tuners; struct cs_dbs_tuners *cs_tuners = dbs_data->tuners;
unsigned int input, j; unsigned int input, j;
...@@ -235,10 +235,10 @@ static ssize_t store_ignore_nice(struct dbs_data *dbs_data, const char *buf, ...@@ -235,10 +235,10 @@ static ssize_t store_ignore_nice(struct dbs_data *dbs_data, const char *buf,
if (input > 1) if (input > 1)
input = 1; input = 1;
if (input == cs_tuners->ignore_nice) /* nothing to do */ if (input == cs_tuners->ignore_nice_load) /* nothing to do */
return count; return count;
cs_tuners->ignore_nice = input; cs_tuners->ignore_nice_load = input;
/* we need to re-evaluate prev_cpu_idle */ /* we need to re-evaluate prev_cpu_idle */
for_each_online_cpu(j) { for_each_online_cpu(j) {
...@@ -246,7 +246,7 @@ static ssize_t store_ignore_nice(struct dbs_data *dbs_data, const char *buf, ...@@ -246,7 +246,7 @@ static ssize_t store_ignore_nice(struct dbs_data *dbs_data, const char *buf,
dbs_info = &per_cpu(cs_cpu_dbs_info, j); dbs_info = &per_cpu(cs_cpu_dbs_info, j);
dbs_info->cdbs.prev_cpu_idle = get_cpu_idle_time(j, dbs_info->cdbs.prev_cpu_idle = get_cpu_idle_time(j,
&dbs_info->cdbs.prev_cpu_wall, 0); &dbs_info->cdbs.prev_cpu_wall, 0);
if (cs_tuners->ignore_nice) if (cs_tuners->ignore_nice_load)
dbs_info->cdbs.prev_cpu_nice = dbs_info->cdbs.prev_cpu_nice =
kcpustat_cpu(j).cpustat[CPUTIME_NICE]; kcpustat_cpu(j).cpustat[CPUTIME_NICE];
} }
...@@ -279,7 +279,7 @@ show_store_one(cs, sampling_rate); ...@@ -279,7 +279,7 @@ show_store_one(cs, sampling_rate);
show_store_one(cs, sampling_down_factor); show_store_one(cs, sampling_down_factor);
show_store_one(cs, up_threshold); show_store_one(cs, up_threshold);
show_store_one(cs, down_threshold); show_store_one(cs, down_threshold);
show_store_one(cs, ignore_nice); show_store_one(cs, ignore_nice_load);
show_store_one(cs, freq_step); show_store_one(cs, freq_step);
declare_show_sampling_rate_min(cs); declare_show_sampling_rate_min(cs);
...@@ -287,7 +287,7 @@ gov_sys_pol_attr_rw(sampling_rate); ...@@ -287,7 +287,7 @@ gov_sys_pol_attr_rw(sampling_rate);
gov_sys_pol_attr_rw(sampling_down_factor); gov_sys_pol_attr_rw(sampling_down_factor);
gov_sys_pol_attr_rw(up_threshold); gov_sys_pol_attr_rw(up_threshold);
gov_sys_pol_attr_rw(down_threshold); gov_sys_pol_attr_rw(down_threshold);
gov_sys_pol_attr_rw(ignore_nice); gov_sys_pol_attr_rw(ignore_nice_load);
gov_sys_pol_attr_rw(freq_step); gov_sys_pol_attr_rw(freq_step);
gov_sys_pol_attr_ro(sampling_rate_min); gov_sys_pol_attr_ro(sampling_rate_min);
...@@ -297,7 +297,7 @@ static struct attribute *dbs_attributes_gov_sys[] = { ...@@ -297,7 +297,7 @@ static struct attribute *dbs_attributes_gov_sys[] = {
&sampling_down_factor_gov_sys.attr, &sampling_down_factor_gov_sys.attr,
&up_threshold_gov_sys.attr, &up_threshold_gov_sys.attr,
&down_threshold_gov_sys.attr, &down_threshold_gov_sys.attr,
&ignore_nice_gov_sys.attr, &ignore_nice_load_gov_sys.attr,
&freq_step_gov_sys.attr, &freq_step_gov_sys.attr,
NULL NULL
}; };
...@@ -313,7 +313,7 @@ static struct attribute *dbs_attributes_gov_pol[] = { ...@@ -313,7 +313,7 @@ static struct attribute *dbs_attributes_gov_pol[] = {
&sampling_down_factor_gov_pol.attr, &sampling_down_factor_gov_pol.attr,
&up_threshold_gov_pol.attr, &up_threshold_gov_pol.attr,
&down_threshold_gov_pol.attr, &down_threshold_gov_pol.attr,
&ignore_nice_gov_pol.attr, &ignore_nice_load_gov_pol.attr,
&freq_step_gov_pol.attr, &freq_step_gov_pol.attr,
NULL NULL
}; };
...@@ -338,7 +338,7 @@ static int cs_init(struct dbs_data *dbs_data) ...@@ -338,7 +338,7 @@ static int cs_init(struct dbs_data *dbs_data)
tuners->up_threshold = DEF_FREQUENCY_UP_THRESHOLD; tuners->up_threshold = DEF_FREQUENCY_UP_THRESHOLD;
tuners->down_threshold = DEF_FREQUENCY_DOWN_THRESHOLD; tuners->down_threshold = DEF_FREQUENCY_DOWN_THRESHOLD;
tuners->sampling_down_factor = DEF_SAMPLING_DOWN_FACTOR; tuners->sampling_down_factor = DEF_SAMPLING_DOWN_FACTOR;
tuners->ignore_nice = 0; tuners->ignore_nice_load = 0;
tuners->freq_step = DEF_FREQUENCY_STEP; tuners->freq_step = DEF_FREQUENCY_STEP;
dbs_data->tuners = tuners; dbs_data->tuners = tuners;
......
...@@ -47,9 +47,9 @@ void dbs_check_cpu(struct dbs_data *dbs_data, int cpu) ...@@ -47,9 +47,9 @@ void dbs_check_cpu(struct dbs_data *dbs_data, int cpu)
unsigned int j; unsigned int j;
if (dbs_data->cdata->governor == GOV_ONDEMAND) if (dbs_data->cdata->governor == GOV_ONDEMAND)
ignore_nice = od_tuners->ignore_nice; ignore_nice = od_tuners->ignore_nice_load;
else else
ignore_nice = cs_tuners->ignore_nice; ignore_nice = cs_tuners->ignore_nice_load;
policy = cdbs->cur_policy; policy = cdbs->cur_policy;
...@@ -298,12 +298,12 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy, ...@@ -298,12 +298,12 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy,
cs_tuners = dbs_data->tuners; cs_tuners = dbs_data->tuners;
cs_dbs_info = dbs_data->cdata->get_cpu_dbs_info_s(cpu); cs_dbs_info = dbs_data->cdata->get_cpu_dbs_info_s(cpu);
sampling_rate = cs_tuners->sampling_rate; sampling_rate = cs_tuners->sampling_rate;
ignore_nice = cs_tuners->ignore_nice; ignore_nice = cs_tuners->ignore_nice_load;
} else { } else {
od_tuners = dbs_data->tuners; od_tuners = dbs_data->tuners;
od_dbs_info = dbs_data->cdata->get_cpu_dbs_info_s(cpu); od_dbs_info = dbs_data->cdata->get_cpu_dbs_info_s(cpu);
sampling_rate = od_tuners->sampling_rate; sampling_rate = od_tuners->sampling_rate;
ignore_nice = od_tuners->ignore_nice; ignore_nice = od_tuners->ignore_nice_load;
od_ops = dbs_data->cdata->gov_ops; od_ops = dbs_data->cdata->gov_ops;
io_busy = od_tuners->io_is_busy; io_busy = od_tuners->io_is_busy;
} }
......
...@@ -165,7 +165,7 @@ struct cs_cpu_dbs_info_s { ...@@ -165,7 +165,7 @@ struct cs_cpu_dbs_info_s {
/* Per policy Governers sysfs tunables */ /* Per policy Governers sysfs tunables */
struct od_dbs_tuners { struct od_dbs_tuners {
unsigned int ignore_nice; unsigned int ignore_nice_load;
unsigned int sampling_rate; unsigned int sampling_rate;
unsigned int sampling_down_factor; unsigned int sampling_down_factor;
unsigned int up_threshold; unsigned int up_threshold;
...@@ -175,7 +175,7 @@ struct od_dbs_tuners { ...@@ -175,7 +175,7 @@ struct od_dbs_tuners {
}; };
struct cs_dbs_tuners { struct cs_dbs_tuners {
unsigned int ignore_nice; unsigned int ignore_nice_load;
unsigned int sampling_rate; unsigned int sampling_rate;
unsigned int sampling_down_factor; unsigned int sampling_down_factor;
unsigned int up_threshold; unsigned int up_threshold;
......
...@@ -403,8 +403,8 @@ static ssize_t store_sampling_down_factor(struct dbs_data *dbs_data, ...@@ -403,8 +403,8 @@ static ssize_t store_sampling_down_factor(struct dbs_data *dbs_data,
return count; return count;
} }
static ssize_t store_ignore_nice(struct dbs_data *dbs_data, const char *buf, static ssize_t store_ignore_nice_load(struct dbs_data *dbs_data,
size_t count) const char *buf, size_t count)
{ {
struct od_dbs_tuners *od_tuners = dbs_data->tuners; struct od_dbs_tuners *od_tuners = dbs_data->tuners;
unsigned int input; unsigned int input;
...@@ -419,10 +419,10 @@ static ssize_t store_ignore_nice(struct dbs_data *dbs_data, const char *buf, ...@@ -419,10 +419,10 @@ static ssize_t store_ignore_nice(struct dbs_data *dbs_data, const char *buf,
if (input > 1) if (input > 1)
input = 1; input = 1;
if (input == od_tuners->ignore_nice) { /* nothing to do */ if (input == od_tuners->ignore_nice_load) { /* nothing to do */
return count; return count;
} }
od_tuners->ignore_nice = input; od_tuners->ignore_nice_load = input;
/* we need to re-evaluate prev_cpu_idle */ /* we need to re-evaluate prev_cpu_idle */
for_each_online_cpu(j) { for_each_online_cpu(j) {
...@@ -430,7 +430,7 @@ static ssize_t store_ignore_nice(struct dbs_data *dbs_data, const char *buf, ...@@ -430,7 +430,7 @@ static ssize_t store_ignore_nice(struct dbs_data *dbs_data, const char *buf,
dbs_info = &per_cpu(od_cpu_dbs_info, j); dbs_info = &per_cpu(od_cpu_dbs_info, j);
dbs_info->cdbs.prev_cpu_idle = get_cpu_idle_time(j, dbs_info->cdbs.prev_cpu_idle = get_cpu_idle_time(j,
&dbs_info->cdbs.prev_cpu_wall, od_tuners->io_is_busy); &dbs_info->cdbs.prev_cpu_wall, od_tuners->io_is_busy);
if (od_tuners->ignore_nice) if (od_tuners->ignore_nice_load)
dbs_info->cdbs.prev_cpu_nice = dbs_info->cdbs.prev_cpu_nice =
kcpustat_cpu(j).cpustat[CPUTIME_NICE]; kcpustat_cpu(j).cpustat[CPUTIME_NICE];
...@@ -461,7 +461,7 @@ show_store_one(od, sampling_rate); ...@@ -461,7 +461,7 @@ show_store_one(od, sampling_rate);
show_store_one(od, io_is_busy); show_store_one(od, io_is_busy);
show_store_one(od, up_threshold); show_store_one(od, up_threshold);
show_store_one(od, sampling_down_factor); show_store_one(od, sampling_down_factor);
show_store_one(od, ignore_nice); show_store_one(od, ignore_nice_load);
show_store_one(od, powersave_bias); show_store_one(od, powersave_bias);
declare_show_sampling_rate_min(od); declare_show_sampling_rate_min(od);
...@@ -469,7 +469,7 @@ gov_sys_pol_attr_rw(sampling_rate); ...@@ -469,7 +469,7 @@ gov_sys_pol_attr_rw(sampling_rate);
gov_sys_pol_attr_rw(io_is_busy); gov_sys_pol_attr_rw(io_is_busy);
gov_sys_pol_attr_rw(up_threshold); gov_sys_pol_attr_rw(up_threshold);
gov_sys_pol_attr_rw(sampling_down_factor); gov_sys_pol_attr_rw(sampling_down_factor);
gov_sys_pol_attr_rw(ignore_nice); gov_sys_pol_attr_rw(ignore_nice_load);
gov_sys_pol_attr_rw(powersave_bias); gov_sys_pol_attr_rw(powersave_bias);
gov_sys_pol_attr_ro(sampling_rate_min); gov_sys_pol_attr_ro(sampling_rate_min);
...@@ -478,7 +478,7 @@ static struct attribute *dbs_attributes_gov_sys[] = { ...@@ -478,7 +478,7 @@ static struct attribute *dbs_attributes_gov_sys[] = {
&sampling_rate_gov_sys.attr, &sampling_rate_gov_sys.attr,
&up_threshold_gov_sys.attr, &up_threshold_gov_sys.attr,
&sampling_down_factor_gov_sys.attr, &sampling_down_factor_gov_sys.attr,
&ignore_nice_gov_sys.attr, &ignore_nice_load_gov_sys.attr,
&powersave_bias_gov_sys.attr, &powersave_bias_gov_sys.attr,
&io_is_busy_gov_sys.attr, &io_is_busy_gov_sys.attr,
NULL NULL
...@@ -494,7 +494,7 @@ static struct attribute *dbs_attributes_gov_pol[] = { ...@@ -494,7 +494,7 @@ static struct attribute *dbs_attributes_gov_pol[] = {
&sampling_rate_gov_pol.attr, &sampling_rate_gov_pol.attr,
&up_threshold_gov_pol.attr, &up_threshold_gov_pol.attr,
&sampling_down_factor_gov_pol.attr, &sampling_down_factor_gov_pol.attr,
&ignore_nice_gov_pol.attr, &ignore_nice_load_gov_pol.attr,
&powersave_bias_gov_pol.attr, &powersave_bias_gov_pol.attr,
&io_is_busy_gov_pol.attr, &io_is_busy_gov_pol.attr,
NULL NULL
...@@ -544,7 +544,7 @@ static int od_init(struct dbs_data *dbs_data) ...@@ -544,7 +544,7 @@ static int od_init(struct dbs_data *dbs_data)
} }
tuners->sampling_down_factor = DEF_SAMPLING_DOWN_FACTOR; tuners->sampling_down_factor = DEF_SAMPLING_DOWN_FACTOR;
tuners->ignore_nice = 0; tuners->ignore_nice_load = 0;
tuners->powersave_bias = default_powersave_bias; tuners->powersave_bias = default_powersave_bias;
tuners->io_is_busy = should_io_be_busy(); tuners->io_is_busy = should_io_be_busy();
......
...@@ -118,11 +118,6 @@ static int loongson2_cpufreq_cpu_init(struct cpufreq_policy *policy) ...@@ -118,11 +118,6 @@ static int loongson2_cpufreq_cpu_init(struct cpufreq_policy *policy)
clk_put(cpuclk); clk_put(cpuclk);
return -EINVAL; return -EINVAL;
} }
ret = clk_set_rate(cpuclk, rate);
if (ret) {
clk_put(cpuclk);
return ret;
}
/* clock table init */ /* clock table init */
for (i = 2; for (i = 2;
...@@ -130,6 +125,12 @@ static int loongson2_cpufreq_cpu_init(struct cpufreq_policy *policy) ...@@ -130,6 +125,12 @@ static int loongson2_cpufreq_cpu_init(struct cpufreq_policy *policy)
i++) i++)
loongson2_clockmod_table[i].frequency = (rate * i) / 8; loongson2_clockmod_table[i].frequency = (rate * i) / 8;
ret = clk_set_rate(cpuclk, rate);
if (ret) {
clk_put(cpuclk);
return ret;
}
policy->cur = loongson2_cpufreq_get(policy->cpu); policy->cur = loongson2_cpufreq_get(policy->cpu);
cpufreq_frequency_table_get_attr(&loongson2_clockmod_table[0], cpufreq_frequency_table_get_attr(&loongson2_clockmod_table[0],
......
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