Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1691353 > unrolled thread
| Started by | Viresh Kumar <viresh.kumar@linaro.org> |
|---|---|
| First post | 2017-07-19 12:20 +0200 |
| Last post | 2017-07-19 15:00 +0200 |
| Articles | 4 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH V3 0/9] cpufreq: transition-latency cleanups Viresh Kumar <viresh.kumar@linaro.org> - 2017-07-19 12:20 +0200
[PATCH V3 5/9] cpufreq: arm_big_little: Make ->get_transition_latency() mandatory Viresh Kumar <viresh.kumar@linaro.org> - 2017-07-19 12:20 +0200
[PATCH V3 9/9] cpufreq: Allow dynamic switching with CPUFREQ_ETERNAL latency Viresh Kumar <viresh.kumar@linaro.org> - 2017-07-19 12:20 +0200
Re: [PATCH V3 0/9] cpufreq: transition-latency cleanups "Rafael J. Wysocki" <rjw@rjwysocki.net> - 2017-07-19 15:00 +0200
| From | Viresh Kumar <viresh.kumar@linaro.org> |
|---|---|
| Date | 2017-07-19 12:20 +0200 |
| Subject | [PATCH V3 0/9] cpufreq: transition-latency cleanups |
| Message-ID | <u4Uff-79T-5@gated-at.bofh.it> |
Hi Rafael, This series tries to cleanup the code around transition-latency and its users. Some of the old legacy code, which may not make much sense now, is dropped as well. And some code consolidation is also done across governors. Based of: v4.13-rc1 Tested on: ARM64 Hikey board. I have pushed it here as well (which gets tested by kbuild test bot): git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git cpufreq/transition-latency V2->V3: - Rearranged patches to keep related stuff together - Introduce CPUFREQ_NO_AUTO_DYNAMIC_SWITCHING flag (Rafael) - Minor optimization in cpufreq_policy_transition_delay_us() and moved it to cpufreq.c (Rafael) - Allow dynamic switching for drivers which don't know their transition latency. V1->V2: - While we still get rid of the limitation of 10ms for using ondemand/conservative, but we preserve the earlier behavior where the transition latency set to CPUFREQ_ETERNAL would not allow use of ondemand/conservative governors. Thanks to Dominik for his feedback on that. -- viresh Viresh Kumar (9): cpufreq: governor: Drop min_sampling_rate cpufreq: Use transition_delay_us for legacy governors as well cpufreq: Cap the default transition delay value to 10 ms cpufreq: Don't set transition_latency for setpolicy drivers cpufreq: arm_big_little: Make ->get_transition_latency() mandatory cpufreq: Replace "max_transition_latency" with "dynamic_switching" cpufreq: schedutil: Set dynamic_switching to true cpufreq: Add CPUFREQ_NO_AUTO_DYNAMIC_SWITCHING cpufreq driver flag cpufreq: Allow dynamic switching with CPUFREQ_ETERNAL latency Documentation/admin-guide/pm/cpufreq.rst | 8 -------- drivers/cpufreq/arm_big_little.c | 10 ++++------ drivers/cpufreq/cpufreq-nforce2.c | 2 +- drivers/cpufreq/cpufreq.c | 34 ++++++++++++++++++++++++++++---- drivers/cpufreq/cpufreq_conservative.c | 6 ------ drivers/cpufreq/cpufreq_governor.c | 17 ++-------------- drivers/cpufreq/cpufreq_governor.h | 3 +-- drivers/cpufreq/cpufreq_ondemand.c | 12 ----------- drivers/cpufreq/elanfreq.c | 4 +--- drivers/cpufreq/gx-suspmod.c | 2 +- drivers/cpufreq/intel_pstate.c | 1 - drivers/cpufreq/longrun.c | 1 - drivers/cpufreq/pmac32-cpufreq.c | 7 +++++-- drivers/cpufreq/sa1100-cpufreq.c | 5 +++-- drivers/cpufreq/sa1110-cpufreq.c | 5 +++-- drivers/cpufreq/sh-cpufreq.c | 3 +-- drivers/cpufreq/speedstep-smi.c | 2 +- drivers/cpufreq/unicore2-cpufreq.c | 3 +-- include/linux/cpufreq.h | 18 ++++++++--------- kernel/sched/cpufreq_schedutil.c | 12 ++--------- 20 files changed, 65 insertions(+), 90 deletions(-) -- 2.13.0.71.gd7076ec9c9cb
[toc] | [next] | [standalone]
| From | Viresh Kumar <viresh.kumar@linaro.org> |
|---|---|
| Date | 2017-07-19 12:20 +0200 |
| Subject | [PATCH V3 5/9] cpufreq: arm_big_little: Make ->get_transition_latency() mandatory |
| Message-ID | <u4Ufj-79T-103@gated-at.bofh.it> |
| In reply to | #1691353 |
All users of arm_big_little driver are defining it and there is no need
to keep it optional.
Make it mandatory to remove the always true conditional statement.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
drivers/cpufreq/arm_big_little.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/drivers/cpufreq/arm_big_little.c b/drivers/cpufreq/arm_big_little.c
index ea6d62547b10..17504129fd77 100644
--- a/drivers/cpufreq/arm_big_little.c
+++ b/drivers/cpufreq/arm_big_little.c
@@ -483,11 +483,8 @@ static int bL_cpufreq_init(struct cpufreq_policy *policy)
return ret;
}
- if (arm_bL_ops->get_transition_latency)
- policy->cpuinfo.transition_latency =
- arm_bL_ops->get_transition_latency(cpu_dev);
- else
- policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL;
+ policy->cpuinfo.transition_latency =
+ arm_bL_ops->get_transition_latency(cpu_dev);
if (is_bL_switching_enabled())
per_cpu(cpu_last_req_freq, policy->cpu) = clk_get_cpu_rate(policy->cpu);
@@ -622,7 +619,8 @@ int bL_cpufreq_register(struct cpufreq_arm_bL_ops *ops)
return -EBUSY;
}
- if (!ops || !strlen(ops->name) || !ops->init_opp_table) {
+ if (!ops || !strlen(ops->name) || !ops->init_opp_table ||
+ !ops->get_transition_latency) {
pr_err("%s: Invalid arm_bL_ops, exiting\n", __func__);
return -ENODEV;
}
--
2.13.0.71.gd7076ec9c9cb
[toc] | [prev] | [next] | [standalone]
| From | Viresh Kumar <viresh.kumar@linaro.org> |
|---|---|
| Date | 2017-07-19 12:20 +0200 |
| Subject | [PATCH V3 9/9] cpufreq: Allow dynamic switching with CPUFREQ_ETERNAL latency |
| Message-ID | <u4Ufj-79T-105@gated-at.bofh.it> |
| In reply to | #1691353 |
With the recent updates, CPUFREQ_ETERNAL is only used by the drivers
which don't know their transition latency but want to use dynamic
switching.
Anyway, the routine cpufreq_policy_transition_delay_us() caps the value
of transition latency to 10 ms now and that can be used safely with such
platforms.
Remove the check from cpufreq_init_governor() and allow dynamic
switching for such configurations as well.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
drivers/cpufreq/cpufreq.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index a4d9b47c4af4..c7ae67d6886d 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -2016,8 +2016,7 @@ static int cpufreq_init_governor(struct cpufreq_policy *policy)
/* Platform doesn't want dynamic frequency switching ? */
if (policy->governor->dynamic_switching &&
- (cpufreq_driver->flags & CPUFREQ_NO_AUTO_DYNAMIC_SWITCHING ||
- policy->cpuinfo.transition_latency == CPUFREQ_ETERNAL)) {
+ cpufreq_driver->flags & CPUFREQ_NO_AUTO_DYNAMIC_SWITCHING) {
struct cpufreq_governor *gov = cpufreq_fallback_governor();
if (gov) {
--
2.13.0.71.gd7076ec9c9cb
[toc] | [prev] | [next] | [standalone]
| From | "Rafael J. Wysocki" <rjw@rjwysocki.net> |
|---|---|
| Date | 2017-07-19 15:00 +0200 |
| Message-ID | <u4WK7-fH-55@gated-at.bofh.it> |
| In reply to | #1691353 |
On Wednesday, July 19, 2017 03:42:40 PM Viresh Kumar wrote: > Hi Rafael, > > This series tries to cleanup the code around transition-latency and its > users. Some of the old legacy code, which may not make much sense now, > is dropped as well. And some code consolidation is also done across > governors. > > Based of: v4.13-rc1 > Tested on: ARM64 Hikey board. From the first quick look this version is fine by me. Unless I find anything of concern later, this will be queued up for 4.14. Thanks, Rafael
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web