* [PATCH 1/6] cpufreq: Retrieve current frequency from scaling drivers with internal governors
[not found] <359744343-18690-1-git-send-email-dirk.brandewie@gmail.com>
@ 2013-02-01 18:49 ` dirk.brandewie
2013-02-02 2:48 ` Viresh Kumar
0 siblings, 1 reply; 3+ messages in thread
From: dirk.brandewie @ 2013-02-01 18:49 UTC (permalink / raw)
To: linux-kernel, cpufreq; +Cc: Dirk Brandewie, Dirk Brandewie
From: Dirk Brandewie <dirk.brandewie@gmail.com>
Scaling drivers that implement the cpufreq_driver.setpolicy() versus
the cpufreq_driver.target() interface do not set policy->cur.
Normally policy->cur is set during the call to cpufreq_driver.target()
when the frequnecy request is made by the governor.
If the scaling driver implements cpufreq_driver.setpolicy() and
cpufreq_driver.get() interfaces use cpufreq_driver.get() to retrieve
the current frequency.
Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
---
drivers/cpufreq/cpufreq.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index 1f93dbd..1c037f0 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -1219,6 +1219,9 @@ unsigned int cpufreq_quick_get(unsigned int cpu)
struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
unsigned int ret_freq = 0;
+ if (cpufreq_driver && cpufreq_driver->setpolicy && cpufreq_driver->get)
+ return cpufreq_driver->get(cpu);
+
if (policy) {
ret_freq = policy->cur;
cpufreq_cpu_put(policy);
--
1.7.7.6
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH 1/6] cpufreq: Retrieve current frequency from scaling drivers with internal governors
2013-02-01 18:49 ` [PATCH 1/6] cpufreq: Retrieve current frequency from scaling drivers with internal governors dirk.brandewie
@ 2013-02-02 2:48 ` Viresh Kumar
0 siblings, 0 replies; 3+ messages in thread
From: Viresh Kumar @ 2013-02-02 2:48 UTC (permalink / raw)
To: dirk.brandewie; +Cc: linux-kernel, cpufreq, Dirk Brandewie
On Sat, Feb 2, 2013 at 12:19 AM, <dirk.brandewie@gmail.com> wrote:
> diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
> @@ -1219,6 +1219,9 @@ unsigned int cpufreq_quick_get(unsigned int cpu)
> struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
> unsigned int ret_freq = 0;
>
> + if (cpufreq_driver && cpufreq_driver->setpolicy && cpufreq_driver->get)
> + return cpufreq_driver->get(cpu);
You are required to do cpufreq_cpu_put() in this case too... Better do
cpufreq_cpu_get() after your check.
> +
> if (policy) {
> ret_freq = policy->cur;
> cpufreq_cpu_put(policy);
> --
> 1.7.7.6
>
> --
> To unsubscribe from this list: send the line "unsubscribe cpufreq" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 0/6] Add P state driver for Intel Core Processors
@ 2013-02-01 18:45 dirk.brandewie
2013-02-01 18:45 ` [PATCH 1/6] cpufreq: Retrieve current frequency from scaling drivers with internal governors dirk.brandewie
0 siblings, 1 reply; 3+ messages in thread
From: dirk.brandewie @ 2013-02-01 18:45 UTC (permalink / raw)
To: linux-kernel, cpufreq; +Cc: Dirk Brandewie
From: Dirk Brandewie <dirk.brandewie@gmail.com>
This driver implements a scaling driver with an internal governor for
Intel Core processors. The driver follows the same model as the
Transmeta scaling driver (longrun.c) and implements the setpolicy()
instead of target(). Scaling drivers that implement setpolicy() are
assmuned to implement internal governors by the cpufreq core. All the
logic for selecting the current P state is contained within the driver
no external governor is used by the cpufreq core.
At the moment only Intel SandyBridge processors are supported. As
testing on SandyBridge+ processors is completed support will be added
to the driver.
New sysfs files for controlling P state selection have been added to
/sys/devices/system/cpu/intel_pstate/
max_perf_pct: limits the maximum P state that will be requested by
the driver stated as a percentage of the avail performance.
min_perf_pct: limits the minimum P state that will be requested by
the driver stated as a percentage of the avail performance.
no_turbo: limits the driver to selecting P states below the turbo
frequency range.
The units for these for these files are purposely abstract and stated
in terms of available performance and not frequency. In idea that
frequency can be set to a single frequency is a fiction for Intel Core
processors. Even if the scaling driver selects a single P state the
actual frequency the processor will run at is selected by the
processor itself.
Based on v3.8-rc5.
Patches 1-5:
Fix issues related to scaling drivers that implement the
setpolicy() interface instead of target() when CONFIG_SMP and
CONFIG_HOTPLUG_CPU are set.
Patch 6:
The driver and associated config glue.
Dirk Brandewie (6):
cpufreq: Retrieve current frequency from scaling drivers with
internal governors
cpufreq: Only query drivers that implement cpufreq_driver.target()
cpufreq: Do not track governor name for scaling drivers with internal
governors.
cpufreq_stats: Do not track policies without associated governors.
cpufreq: balance out cpufreq_cpu_{get,put} for scaling drivers using
setpolicy
cpufreq/x86: Add P-state driver for sandy bridge.
drivers/cpufreq/Kconfig.x86 | 18 +
drivers/cpufreq/Makefile | 1 +
drivers/cpufreq/cpufreq.c | 43 ++-
drivers/cpufreq/cpufreq_stats.c | 4 +-
drivers/cpufreq/intel_pstate.c | 830 +++++++++++++++++++++++++++++++++++++++
5 files changed, 880 insertions(+), 16 deletions(-)
create mode 100644 drivers/cpufreq/intel_pstate.c
--
1.7.7.6
^ permalink raw reply [flat|nested] 3+ messages in thread* [PATCH 1/6] cpufreq: Retrieve current frequency from scaling drivers with internal governors
2013-02-01 18:45 [PATCH 0/6] Add P state driver for Intel Core Processors dirk.brandewie
@ 2013-02-01 18:45 ` dirk.brandewie
0 siblings, 0 replies; 3+ messages in thread
From: dirk.brandewie @ 2013-02-01 18:45 UTC (permalink / raw)
To: linux-kernel, cpufreq; +Cc: Dirk Brandewie
From: Dirk Brandewie <dirk.j.brandewie@intel.com>
Scaling drivers that implement the cpufreq_driver.setpolicy() versus
the cpufreq_driver.target() interface do not set policy->cur.
Normally policy->cur is set during the call to cpufreq_driver.target()
when the frequnecy request is made by the governor.
If the scaling driver implements cpufreq_driver.setpolicy() and
cpufreq_driver.get() interfaces use cpufreq_driver.get() to retrieve
the current frequency.
Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
---
drivers/cpufreq/cpufreq.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index 1f93dbd..1c037f0 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -1219,6 +1219,9 @@ unsigned int cpufreq_quick_get(unsigned int cpu)
struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
unsigned int ret_freq = 0;
+ if (cpufreq_driver && cpufreq_driver->setpolicy && cpufreq_driver->get)
+ return cpufreq_driver->get(cpu);
+
if (policy) {
ret_freq = policy->cur;
cpufreq_cpu_put(policy);
--
1.7.7.6
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2013-02-02 2:48 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <359744343-18690-1-git-send-email-dirk.brandewie@gmail.com>
2013-02-01 18:49 ` [PATCH 1/6] cpufreq: Retrieve current frequency from scaling drivers with internal governors dirk.brandewie
2013-02-02 2:48 ` Viresh Kumar
2013-02-01 18:45 [PATCH 0/6] Add P state driver for Intel Core Processors dirk.brandewie
2013-02-01 18:45 ` [PATCH 1/6] cpufreq: Retrieve current frequency from scaling drivers with internal governors dirk.brandewie
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®