* [PATCH 00/11] intel_pstate updates
@ 2014-07-18 15:37 dirk.brandewie
2014-07-18 15:37 ` [PATCH 01/11] cpufreq: intel_pstate: Make intel_pstate_kobject and debugfs_parent locals dirk.brandewie
` (12 more replies)
0 siblings, 13 replies; 17+ messages in thread
From: dirk.brandewie @ 2014-07-18 15:37 UTC (permalink / raw)
To: linux-pm; +Cc: rjw, Dirk Brandewie
From: Dirk Brandewie <dirk.j.brandewie@intel.com>
These patches have been in the development branch used by Stratos,
Doug and myself for a long time. I had hoped to batch them up with
other functional changes that are under development but those changes
are still under active discussion and there is no reason to hold these
changes up.
Based on v3.16-rc5 commit 1795cd9b3a91d4b5473c97f491d63892442212ab
Stratos Karafotis (11):
cpufreq: intel_pstate: Make intel_pstate_kobject and debugfs_parent
locals
cpufreq: intel_pstate: Remove unnecessary type casting in div_s64()
call
cpufreq: intel_pstate: Add missing blank lines after declarations
cpufreq: intel_pstate: Fit code in a single line where possible
cpufreq: intel_pstate: Cleanup parentheses
cpufreq: intel_pstate: Remove unnecessary intermediate variable
sample_time
cpufreq: intel_pstate: Align multiple lines to open parenthesis
cpufreq: intel_pstate: Disable interrupts during MSRs reading
cpufreq: intel_pstate: Simplify P state adjustment logic.
cpufreq: intel_pstate: Remove core_pct rounding
cpufreq: intel_pstate: Keep values in aperf/mperf in full precision
drivers/cpufreq/intel_pstate.c | 131 +++++++++++++++++------------------------
1 file changed, 53 insertions(+), 78 deletions(-)
--
1.9.3
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 01/11] cpufreq: intel_pstate: Make intel_pstate_kobject and debugfs_parent locals
2014-07-18 15:37 [PATCH 00/11] intel_pstate updates dirk.brandewie
@ 2014-07-18 15:37 ` dirk.brandewie
2014-07-18 15:37 ` [PATCH 02/11] cpufreq: intel_pstate: Remove unnecessary type casting in div_s64() call dirk.brandewie
` (11 subsequent siblings)
12 siblings, 0 replies; 17+ messages in thread
From: dirk.brandewie @ 2014-07-18 15:37 UTC (permalink / raw)
To: linux-pm; +Cc: rjw, Stratos Karafotis, Dirk Brandewie
From: Stratos Karafotis <stratosk@semaphore.gr>
Since we never remove sysfs entry and debugfs files, we can make
the intel_pstate_kobject and debugfs_parent locals.
Also, annotate with __init intel_pstate_sysfs_expose_params()
and intel_pstate_debug_expose_params() in order to be freed
after bootstrap.
Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
---
drivers/cpufreq/intel_pstate.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 86631cb..601c428 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -253,9 +253,9 @@ static struct pid_param pid_files[] = {
{NULL, NULL}
};
-static struct dentry *debugfs_parent;
-static void intel_pstate_debug_expose_params(void)
+static void __init intel_pstate_debug_expose_params(void)
{
+ struct dentry *debugfs_parent;
int i = 0;
debugfs_parent = debugfs_create_dir("pstate_snb", NULL);
@@ -342,10 +342,10 @@ static struct attribute *intel_pstate_attributes[] = {
static struct attribute_group intel_pstate_attr_group = {
.attrs = intel_pstate_attributes,
};
-static struct kobject *intel_pstate_kobject;
-static void intel_pstate_sysfs_expose_params(void)
+static void __init intel_pstate_sysfs_expose_params(void)
{
+ struct kobject *intel_pstate_kobject;
int rc;
intel_pstate_kobject = kobject_create_and_add("intel_pstate",
--
1.9.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 02/11] cpufreq: intel_pstate: Remove unnecessary type casting in div_s64() call
2014-07-18 15:37 [PATCH 00/11] intel_pstate updates dirk.brandewie
2014-07-18 15:37 ` [PATCH 01/11] cpufreq: intel_pstate: Make intel_pstate_kobject and debugfs_parent locals dirk.brandewie
@ 2014-07-18 15:37 ` dirk.brandewie
2014-07-18 15:37 ` [PATCH 03/11] cpufreq: intel_pstate: Add missing blank lines after declarations dirk.brandewie
` (10 subsequent siblings)
12 siblings, 0 replies; 17+ messages in thread
From: dirk.brandewie @ 2014-07-18 15:37 UTC (permalink / raw)
To: linux-pm; +Cc: rjw, Stratos Karafotis, Dirk Brandewie
From: Stratos Karafotis <stratosk@semaphore.gr>
div_s64() accepts the divisor parameter as s32. Helper div_fp()
also accepts divisor as int32_t.
So, remove the unnecessary int64_t type casting.
Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
---
drivers/cpufreq/intel_pstate.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 601c428..e5fd780 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -50,7 +50,7 @@ static inline int32_t mul_fp(int32_t x, int32_t y)
static inline int32_t div_fp(int32_t x, int32_t y)
{
- return div_s64((int64_t)x << FRAC_BITS, (int64_t)y);
+ return div_s64((int64_t)x << FRAC_BITS, y);
}
struct sample {
--
1.9.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 03/11] cpufreq: intel_pstate: Add missing blank lines after declarations
2014-07-18 15:37 [PATCH 00/11] intel_pstate updates dirk.brandewie
2014-07-18 15:37 ` [PATCH 01/11] cpufreq: intel_pstate: Make intel_pstate_kobject and debugfs_parent locals dirk.brandewie
2014-07-18 15:37 ` [PATCH 02/11] cpufreq: intel_pstate: Remove unnecessary type casting in div_s64() call dirk.brandewie
@ 2014-07-18 15:37 ` dirk.brandewie
2014-07-18 15:37 ` [PATCH 04/11] cpufreq: intel_pstate: Fit code in a single line where possible dirk.brandewie
` (9 subsequent siblings)
12 siblings, 0 replies; 17+ messages in thread
From: dirk.brandewie @ 2014-07-18 15:37 UTC (permalink / raw)
To: linux-pm; +Cc: rjw, Stratos Karafotis, Dirk Brandewie
From: Stratos Karafotis <stratosk@semaphore.gr>
Also, remove unnecessary blank lines.
Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
---
drivers/cpufreq/intel_pstate.c | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index e5fd780..e9f3048 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -37,7 +37,6 @@
#define BYT_TURBO_RATIOS 0x66c
#define BYT_TURBO_VIDS 0x66d
-
#define FRAC_BITS 8
#define int_tofp(X) ((int64_t)(X) << FRAC_BITS)
#define fp_toint(X) ((X) >> FRAC_BITS)
@@ -167,7 +166,6 @@ static inline void pid_i_gain_set(struct _pid *pid, int percent)
static inline void pid_d_gain_set(struct _pid *pid, int percent)
{
-
pid->d_gain = div_fp(int_tofp(percent), int_tofp(100));
}
@@ -217,6 +215,7 @@ static inline void intel_pstate_busy_pid_reset(struct cpudata *cpu)
static inline void intel_pstate_reset_all_pid(void)
{
unsigned int cpu;
+
for_each_online_cpu(cpu) {
if (all_cpu_data[cpu])
intel_pstate_busy_pid_reset(all_cpu_data[cpu]);
@@ -230,6 +229,7 @@ static int pid_param_set(void *data, u64 val)
intel_pstate_reset_all_pid();
return 0;
}
+
static int pid_param_get(void *data, u64 *val)
{
*val = *(u32 *)data;
@@ -284,6 +284,7 @@ static ssize_t store_no_turbo(struct kobject *a, struct attribute *b,
{
unsigned int input;
int ret;
+
ret = sscanf(buf, "%u", &input);
if (ret != 1)
return -EINVAL;
@@ -300,6 +301,7 @@ static ssize_t store_max_perf_pct(struct kobject *a, struct attribute *b,
{
unsigned int input;
int ret;
+
ret = sscanf(buf, "%u", &input);
if (ret != 1)
return -EINVAL;
@@ -307,6 +309,7 @@ static ssize_t store_max_perf_pct(struct kobject *a, struct attribute *b,
limits.max_sysfs_pct = clamp_t(int, input, 0 , 100);
limits.max_perf_pct = min(limits.max_policy_pct, limits.max_sysfs_pct);
limits.max_perf = div_fp(int_tofp(limits.max_perf_pct), int_tofp(100));
+
return count;
}
@@ -315,6 +318,7 @@ static ssize_t store_min_perf_pct(struct kobject *a, struct attribute *b,
{
unsigned int input;
int ret;
+
ret = sscanf(buf, "%u", &input);
if (ret != 1)
return -EINVAL;
@@ -360,6 +364,7 @@ static void __init intel_pstate_sysfs_expose_params(void)
static int byt_get_min_pstate(void)
{
u64 value;
+
rdmsrl(BYT_RATIOS, value);
return (value >> 8) & 0x7F;
}
@@ -367,6 +372,7 @@ static int byt_get_min_pstate(void)
static int byt_get_max_pstate(void)
{
u64 value;
+
rdmsrl(BYT_RATIOS, value);
return (value >> 16) & 0x7F;
}
@@ -374,6 +380,7 @@ static int byt_get_max_pstate(void)
static int byt_get_turbo_pstate(void)
{
u64 value;
+
rdmsrl(BYT_TURBO_RATIOS, value);
return value & 0x7F;
}
@@ -407,7 +414,6 @@ static void byt_get_vid(struct cpudata *cpudata)
{
u64 value;
-
rdmsrl(BYT_VIDS, value);
cpudata->vid.min = int_tofp((value >> 8) & 0x7f);
cpudata->vid.max = int_tofp((value >> 16) & 0x7f);
@@ -420,10 +426,10 @@ static void byt_get_vid(struct cpudata *cpudata)
cpudata->vid.turbo = value & 0x7f;
}
-
static int core_get_min_pstate(void)
{
u64 value;
+
rdmsrl(MSR_PLATFORM_INFO, value);
return (value >> 40) & 0xFF;
}
@@ -431,6 +437,7 @@ static int core_get_min_pstate(void)
static int core_get_max_pstate(void)
{
u64 value;
+
rdmsrl(MSR_PLATFORM_INFO, value);
return (value >> 8) & 0xFF;
}
@@ -439,6 +446,7 @@ static int core_get_turbo_pstate(void)
{
u64 value;
int nont, ret;
+
rdmsrl(MSR_NHM_TURBO_RATIO_LIMIT, value);
nont = core_get_max_pstate();
ret = ((value) & 255);
@@ -493,12 +501,12 @@ static struct cpu_defaults byt_params = {
},
};
-
static void intel_pstate_get_min_max(struct cpudata *cpu, int *min, int *max)
{
int max_perf = cpu->pstate.turbo_pstate;
int max_perf_adj;
int min_perf;
+
if (limits.no_turbo)
max_perf = cpu->pstate.max_pstate;
--
1.9.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 04/11] cpufreq: intel_pstate: Fit code in a single line where possible
2014-07-18 15:37 [PATCH 00/11] intel_pstate updates dirk.brandewie
` (2 preceding siblings ...)
2014-07-18 15:37 ` [PATCH 03/11] cpufreq: intel_pstate: Add missing blank lines after declarations dirk.brandewie
@ 2014-07-18 15:37 ` dirk.brandewie
2014-07-18 15:37 ` [PATCH 05/11] cpufreq: intel_pstate: Cleanup parentheses dirk.brandewie
` (8 subsequent siblings)
12 siblings, 0 replies; 17+ messages in thread
From: dirk.brandewie @ 2014-07-18 15:37 UTC (permalink / raw)
To: linux-pm; +Cc: rjw, Stratos Karafotis, Dirk Brandewie
From: Stratos Karafotis <stratosk@semaphore.gr>
We can fit these lines in a single one, under the 80 characters
limit.
Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
---
drivers/cpufreq/intel_pstate.c | 18 +++++-------------
1 file changed, 5 insertions(+), 13 deletions(-)
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index e9f3048..424c5a9 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -205,11 +205,7 @@ static inline void intel_pstate_busy_pid_reset(struct cpudata *cpu)
pid_d_gain_set(&cpu->pid, pid_params.d_gain_pct);
pid_i_gain_set(&cpu->pid, pid_params.i_gain_pct);
- pid_reset(&cpu->pid,
- pid_params.setpoint,
- 100,
- pid_params.deadband,
- 0);
+ pid_reset(&cpu->pid, pid_params.setpoint, 100, pid_params.deadband, 0);
}
static inline void intel_pstate_reset_all_pid(void)
@@ -235,8 +231,7 @@ static int pid_param_get(void *data, u64 *val)
*val = *(u32 *)data;
return 0;
}
-DEFINE_SIMPLE_ATTRIBUTE(fops_pid_param, pid_param_get,
- pid_param_set, "%llu\n");
+DEFINE_SIMPLE_ATTRIBUTE(fops_pid_param, pid_param_get, pid_param_set, "%llu\n");
struct pid_param {
char *name;
@@ -355,8 +350,7 @@ static void __init intel_pstate_sysfs_expose_params(void)
intel_pstate_kobject = kobject_create_and_add("intel_pstate",
&cpu_subsys.dev_root->kobj);
BUG_ON(!intel_pstate_kobject);
- rc = sysfs_create_group(intel_pstate_kobject,
- &intel_pstate_attr_group);
+ rc = sysfs_create_group(intel_pstate_kobject, &intel_pstate_attr_group);
BUG_ON(rc);
}
@@ -515,8 +509,7 @@ static void intel_pstate_get_min_max(struct cpudata *cpu, int *min, int *max)
cpu->pstate.min_pstate, cpu->pstate.turbo_pstate);
min_perf = fp_toint(mul_fp(int_tofp(max_perf), limits.min_perf));
- *min = clamp_t(int, min_perf,
- cpu->pstate.min_pstate, max_perf);
+ *min = clamp_t(int, min_perf, cpu->pstate.min_pstate, max_perf);
}
static void intel_pstate_set_pstate(struct cpudata *cpu, int pstate)
@@ -713,8 +706,7 @@ static int intel_pstate_init_cpu(unsigned int cpunum)
init_timer_deferrable(&cpu->timer);
cpu->timer.function = intel_pstate_timer_func;
- cpu->timer.data =
- (unsigned long)cpu;
+ cpu->timer.data = (unsigned long)cpu;
cpu->timer.expires = jiffies + HZ/100;
intel_pstate_busy_pid_reset(cpu);
intel_pstate_sample(cpu);
--
1.9.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 05/11] cpufreq: intel_pstate: Cleanup parentheses
2014-07-18 15:37 [PATCH 00/11] intel_pstate updates dirk.brandewie
` (3 preceding siblings ...)
2014-07-18 15:37 ` [PATCH 04/11] cpufreq: intel_pstate: Fit code in a single line where possible dirk.brandewie
@ 2014-07-18 15:37 ` dirk.brandewie
2014-07-18 15:37 ` [PATCH 06/11] cpufreq: intel_pstate: Remove unnecessary intermediate variable sample_time dirk.brandewie
` (7 subsequent siblings)
12 siblings, 0 replies; 17+ messages in thread
From: dirk.brandewie @ 2014-07-18 15:37 UTC (permalink / raw)
To: linux-pm; +Cc: rjw, Stratos Karafotis, Dirk Brandewie
From: Stratos Karafotis <stratosk@semaphore.gr>
Remove unnecessary parentheses.
Also, add parentheses in one case for better readability.
Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
---
drivers/cpufreq/intel_pstate.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 424c5a9..dee9e58 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -443,7 +443,7 @@ static int core_get_turbo_pstate(void)
rdmsrl(MSR_NHM_TURBO_RATIO_LIMIT, value);
nont = core_get_max_pstate();
- ret = ((value) & 255);
+ ret = (value) & 255;
if (ret <= nont)
ret = nont;
return ret;
@@ -617,7 +617,7 @@ static inline int32_t intel_pstate_get_scaled_busy(struct cpudata *cpu)
current_pstate = int_tofp(cpu->pstate.current_pstate);
core_busy = mul_fp(core_busy, div_fp(max_pstate, current_pstate));
- sample_time = (pid_params.sample_rate_ms * USEC_PER_MSEC);
+ sample_time = pid_params.sample_rate_ms * USEC_PER_MSEC;
duration_us = (u32) ktime_us_delta(cpu->sample.time,
cpu->last_sample_time);
if (duration_us > sample_time * 3) {
@@ -751,7 +751,7 @@ static int intel_pstate_set_policy(struct cpufreq_policy *policy)
limits.min_perf_pct = clamp_t(int, limits.min_perf_pct, 0 , 100);
limits.min_perf = div_fp(int_tofp(limits.min_perf_pct), int_tofp(100));
- limits.max_policy_pct = policy->max * 100 / policy->cpuinfo.max_freq;
+ limits.max_policy_pct = (policy->max * 100) / policy->cpuinfo.max_freq;
limits.max_policy_pct = clamp_t(int, limits.max_policy_pct, 0 , 100);
limits.max_perf_pct = min(limits.max_policy_pct, limits.max_sysfs_pct);
limits.max_perf = div_fp(int_tofp(limits.max_perf_pct), int_tofp(100));
@@ -763,8 +763,8 @@ static int intel_pstate_verify_policy(struct cpufreq_policy *policy)
{
cpufreq_verify_within_cpu_limits(policy);
- if ((policy->policy != CPUFREQ_POLICY_POWERSAVE) &&
- (policy->policy != CPUFREQ_POLICY_PERFORMANCE))
+ if (policy->policy != CPUFREQ_POLICY_POWERSAVE &&
+ policy->policy != CPUFREQ_POLICY_PERFORMANCE)
return -EINVAL;
return 0;
--
1.9.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 06/11] cpufreq: intel_pstate: Remove unnecessary intermediate variable sample_time
2014-07-18 15:37 [PATCH 00/11] intel_pstate updates dirk.brandewie
` (4 preceding siblings ...)
2014-07-18 15:37 ` [PATCH 05/11] cpufreq: intel_pstate: Cleanup parentheses dirk.brandewie
@ 2014-07-18 15:37 ` dirk.brandewie
2014-07-18 15:37 ` [PATCH 07/11] cpufreq: intel_pstate: Align multiple lines to open parenthesis dirk.brandewie
` (6 subsequent siblings)
12 siblings, 0 replies; 17+ messages in thread
From: dirk.brandewie @ 2014-07-18 15:37 UTC (permalink / raw)
To: linux-pm; +Cc: rjw, Stratos Karafotis, Dirk Brandewie
From: Stratos Karafotis <stratosk@semaphore.gr>
Remove the unnecessary intermediate assignment and use directly the
pid_params.sample_rate_ms variable.
Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
---
drivers/cpufreq/intel_pstate.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index dee9e58..e0ed078 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -599,10 +599,9 @@ static inline void intel_pstate_sample(struct cpudata *cpu)
static inline void intel_pstate_set_sample_time(struct cpudata *cpu)
{
- int sample_time, delay;
+ int delay;
- sample_time = pid_params.sample_rate_ms;
- delay = msecs_to_jiffies(sample_time);
+ delay = msecs_to_jiffies(pid_params.sample_rate_ms);
mod_timer_pinned(&cpu->timer, jiffies + delay);
}
--
1.9.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 07/11] cpufreq: intel_pstate: Align multiple lines to open parenthesis
2014-07-18 15:37 [PATCH 00/11] intel_pstate updates dirk.brandewie
` (5 preceding siblings ...)
2014-07-18 15:37 ` [PATCH 06/11] cpufreq: intel_pstate: Remove unnecessary intermediate variable sample_time dirk.brandewie
@ 2014-07-18 15:37 ` dirk.brandewie
2014-07-18 15:37 ` [PATCH 08/11] cpufreq: intel_pstate: Disable interrupts during MSRs reading dirk.brandewie
` (5 subsequent siblings)
12 siblings, 0 replies; 17+ messages in thread
From: dirk.brandewie @ 2014-07-18 15:37 UTC (permalink / raw)
To: linux-pm; +Cc: rjw, Stratos Karafotis
From: Stratos Karafotis <stratosk@semaphore.gr>
Suppress checkpatch.pl --strict warnings:
CHECK: Alignment should match open parenthesis
Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
---
drivers/cpufreq/intel_pstate.c | 34 +++++++++++++++++-----------------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index e0ed078..9d75bd6 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -147,7 +147,7 @@ static struct perf_limits limits = {
};
static inline void pid_reset(struct _pid *pid, int setpoint, int busy,
- int deadband, int integral) {
+ int deadband, int integral) {
pid->setpoint = setpoint;
pid->deadband = deadband;
pid->integral = int_tofp(integral);
@@ -258,8 +258,8 @@ static void __init intel_pstate_debug_expose_params(void)
return;
while (pid_files[i].name) {
debugfs_create_file(pid_files[i].name, 0660,
- debugfs_parent, pid_files[i].value,
- &fops_pid_param);
+ debugfs_parent, pid_files[i].value,
+ &fops_pid_param);
i++;
}
}
@@ -275,7 +275,7 @@ static void __init intel_pstate_debug_expose_params(void)
}
static ssize_t store_no_turbo(struct kobject *a, struct attribute *b,
- const char *buf, size_t count)
+ const char *buf, size_t count)
{
unsigned int input;
int ret;
@@ -292,7 +292,7 @@ static ssize_t store_no_turbo(struct kobject *a, struct attribute *b,
}
static ssize_t store_max_perf_pct(struct kobject *a, struct attribute *b,
- const char *buf, size_t count)
+ const char *buf, size_t count)
{
unsigned int input;
int ret;
@@ -309,7 +309,7 @@ static ssize_t store_max_perf_pct(struct kobject *a, struct attribute *b,
}
static ssize_t store_min_perf_pct(struct kobject *a, struct attribute *b,
- const char *buf, size_t count)
+ const char *buf, size_t count)
{
unsigned int input;
int ret;
@@ -618,10 +618,10 @@ static inline int32_t intel_pstate_get_scaled_busy(struct cpudata *cpu)
sample_time = pid_params.sample_rate_ms * USEC_PER_MSEC;
duration_us = (u32) ktime_us_delta(cpu->sample.time,
- cpu->last_sample_time);
+ cpu->last_sample_time);
if (duration_us > sample_time * 3) {
sample_ratio = div_fp(int_tofp(sample_time),
- int_tofp(duration_us));
+ int_tofp(duration_us));
core_busy = mul_fp(core_busy, sample_ratio);
}
@@ -763,7 +763,7 @@ static int intel_pstate_verify_policy(struct cpufreq_policy *policy)
cpufreq_verify_within_cpu_limits(policy);
if (policy->policy != CPUFREQ_POLICY_POWERSAVE &&
- policy->policy != CPUFREQ_POLICY_PERFORMANCE)
+ policy->policy != CPUFREQ_POLICY_PERFORMANCE)
return -EINVAL;
return 0;
@@ -796,7 +796,7 @@ static int intel_pstate_cpu_init(struct cpufreq_policy *policy)
rdmsrl(MSR_IA32_MISC_ENABLE, misc_en);
if (misc_en & MSR_IA32_MISC_ENABLE_TURBO_DISABLE ||
- cpu->pstate.max_pstate == cpu->pstate.turbo_pstate) {
+ cpu->pstate.max_pstate == cpu->pstate.turbo_pstate) {
limits.turbo_disabled = 1;
limits.no_turbo = 1;
}
@@ -838,8 +838,8 @@ static int intel_pstate_msrs_not_valid(void)
rdmsrl(MSR_IA32_MPERF, mperf);
if (!pstate_funcs.get_max() ||
- !pstate_funcs.get_min() ||
- !pstate_funcs.get_turbo())
+ !pstate_funcs.get_min() ||
+ !pstate_funcs.get_turbo())
return -ENODEV;
rdmsrl(MSR_IA32_APERF, tmp);
@@ -921,14 +921,14 @@ static bool intel_pstate_platform_pwr_mgmt_exists(void)
struct acpi_table_header hdr;
struct hw_vendor_info *v_info;
- if (acpi_disabled
- || ACPI_FAILURE(acpi_get_table_header(ACPI_SIG_FADT, 0, &hdr)))
+ if (acpi_disabled ||
+ ACPI_FAILURE(acpi_get_table_header(ACPI_SIG_FADT, 0, &hdr)))
return false;
for (v_info = vendor_info; v_info->valid; v_info++) {
- if (!strncmp(hdr.oem_id, v_info->oem_id, ACPI_OEM_ID_SIZE)
- && !strncmp(hdr.oem_table_id, v_info->oem_table_id, ACPI_OEM_TABLE_ID_SIZE)
- && intel_pstate_no_acpi_pss())
+ if (!strncmp(hdr.oem_id, v_info->oem_id, ACPI_OEM_ID_SIZE) &&
+ !strncmp(hdr.oem_table_id, v_info->oem_table_id, ACPI_OEM_TABLE_ID_SIZE) &&
+ intel_pstate_no_acpi_pss())
return true;
}
--
1.9.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 08/11] cpufreq: intel_pstate: Disable interrupts during MSRs reading
2014-07-18 15:37 [PATCH 00/11] intel_pstate updates dirk.brandewie
` (6 preceding siblings ...)
2014-07-18 15:37 ` [PATCH 07/11] cpufreq: intel_pstate: Align multiple lines to open parenthesis dirk.brandewie
@ 2014-07-18 15:37 ` dirk.brandewie
2014-07-18 15:37 ` [PATCH 09/17] cpufreq: intel_pstate: Keep values in aperf/mperf in full precision dirk.brandewie
` (4 subsequent siblings)
12 siblings, 0 replies; 17+ messages in thread
From: dirk.brandewie @ 2014-07-18 15:37 UTC (permalink / raw)
To: linux-pm; +Cc: rjw, Stratos Karafotis, Dirk Brandewie
From: Stratos Karafotis <stratosk@semaphore.gr>
According to Intel 64 and IA-32 Architectures SDM, Volume 3,
Chapter 14.2, "Software needs to exercise care to avoid delays
between the two RDMSRs (for example interrupts)".
So, disable interrupts during reading MSRs IA32_APERF and IA32_MPERF.
This should increase the accuracy of the calculations.
Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
---
drivers/cpufreq/intel_pstate.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 9d75bd6..ff3c562 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -577,9 +577,12 @@ static inline void intel_pstate_calc_busy(struct cpudata *cpu)
static inline void intel_pstate_sample(struct cpudata *cpu)
{
u64 aperf, mperf;
+ unsigned long flags;
+ local_irq_save(flags);
rdmsrl(MSR_IA32_APERF, aperf);
rdmsrl(MSR_IA32_MPERF, mperf);
+ local_irq_restore(flags);
aperf = aperf >> FRAC_BITS;
mperf = mperf >> FRAC_BITS;
--
1.9.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 09/17] cpufreq: intel_pstate: Keep values in aperf/mperf in full precision
2014-07-18 15:37 [PATCH 00/11] intel_pstate updates dirk.brandewie
` (7 preceding siblings ...)
2014-07-18 15:37 ` [PATCH 08/11] cpufreq: intel_pstate: Disable interrupts during MSRs reading dirk.brandewie
@ 2014-07-18 15:37 ` dirk.brandewie
2014-07-18 15:37 ` [PATCH 09/11] cpufreq: intel_pstate: Simplify P state adjustment logic dirk.brandewie
` (3 subsequent siblings)
12 siblings, 0 replies; 17+ messages in thread
From: dirk.brandewie @ 2014-07-18 15:37 UTC (permalink / raw)
To: linux-pm; +Cc: rjw, Stratos Karafotis, Dirk Brandewie
From: Stratos Karafotis <stratosk@semaphore.gr>
Currently we shift right aperf and mperf variables by FRAC_BITS
to prevent overflow when we convert them to fix point numbers
(shift left by FRAC_BITS).
But this is not necessary, because we actually use delta aperf and mperf
which are much less than APERF and MPERF values.
So, use the unmodified APERF and MPERF values in calculation.
This also adds 8 bits in precision, although the gain is insignificant.
Also, use div64_u64 instead of div_u64 in calc_busy() to avoid
overflow of sample->mperf as divisor.
Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
---
drivers/cpufreq/intel_pstate.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index ff3c562..129ffb2 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -584,9 +584,6 @@ static inline void intel_pstate_sample(struct cpudata *cpu)
rdmsrl(MSR_IA32_MPERF, mperf);
local_irq_restore(flags);
- aperf = aperf >> FRAC_BITS;
- mperf = mperf >> FRAC_BITS;
-
cpu->last_sample_time = cpu->sample.time;
cpu->sample.time = ktime_get();
cpu->sample.aperf = aperf;
--
1.9.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 09/11] cpufreq: intel_pstate: Simplify P state adjustment logic.
2014-07-18 15:37 [PATCH 00/11] intel_pstate updates dirk.brandewie
` (8 preceding siblings ...)
2014-07-18 15:37 ` [PATCH 09/17] cpufreq: intel_pstate: Keep values in aperf/mperf in full precision dirk.brandewie
@ 2014-07-18 15:37 ` dirk.brandewie
2014-07-18 15:37 ` [PATCH 10/11] cpufreq: intel_pstate: Remove core_pct rounding dirk.brandewie
` (2 subsequent siblings)
12 siblings, 0 replies; 17+ messages in thread
From: dirk.brandewie @ 2014-07-18 15:37 UTC (permalink / raw)
To: linux-pm; +Cc: rjw, Stratos Karafotis
From: Stratos Karafotis <stratosk@semaphore.gr>
Simplify the code by removing the inline functions pstate_increase and
pstate_decrease and use directly the intel_pstate_set_pstate.
Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
Acked-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
---
drivers/cpufreq/intel_pstate.c | 26 +++-----------------------
1 file changed, 3 insertions(+), 23 deletions(-)
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index ff3c562..33a09da 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -530,21 +530,6 @@ static void intel_pstate_set_pstate(struct cpudata *cpu, int pstate)
pstate_funcs.set(cpu, pstate);
}
-static inline void intel_pstate_pstate_increase(struct cpudata *cpu, int steps)
-{
- int target;
- target = cpu->pstate.current_pstate + steps;
-
- intel_pstate_set_pstate(cpu, target);
-}
-
-static inline void intel_pstate_pstate_decrease(struct cpudata *cpu, int steps)
-{
- int target;
- target = cpu->pstate.current_pstate - steps;
- intel_pstate_set_pstate(cpu, target);
-}
-
static void intel_pstate_get_cpu_pstates(struct cpudata *cpu)
{
cpu->pstate.min_pstate = pstate_funcs.get_min();
@@ -635,20 +620,15 @@ static inline void intel_pstate_adjust_busy_pstate(struct cpudata *cpu)
{
int32_t busy_scaled;
struct _pid *pid;
- signed int ctl = 0;
- int steps;
+ signed int ctl;
pid = &cpu->pid;
busy_scaled = intel_pstate_get_scaled_busy(cpu);
ctl = pid_calc(pid, busy_scaled);
- steps = abs(ctl);
-
- if (ctl < 0)
- intel_pstate_pstate_increase(cpu, steps);
- else
- intel_pstate_pstate_decrease(cpu, steps);
+ /* Negative values of ctl increase the pstate and vice versa */
+ intel_pstate_set_pstate(cpu, cpu->pstate.current_pstate - ctl);
}
static void intel_pstate_timer_func(unsigned long __data)
--
1.9.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 10/11] cpufreq: intel_pstate: Remove core_pct rounding
2014-07-18 15:37 [PATCH 00/11] intel_pstate updates dirk.brandewie
` (9 preceding siblings ...)
2014-07-18 15:37 ` [PATCH 09/11] cpufreq: intel_pstate: Simplify P state adjustment logic dirk.brandewie
@ 2014-07-18 15:37 ` dirk.brandewie
2014-07-18 15:37 ` [PATCH 11/11] cpufreq: intel_pstate: Keep values in aperf/mperf in full precision dirk.brandewie
2014-07-19 20:31 ` [PATCH 00/11] intel_pstate updates Rafael J. Wysocki
12 siblings, 0 replies; 17+ messages in thread
From: dirk.brandewie @ 2014-07-18 15:37 UTC (permalink / raw)
To: linux-pm; +Cc: rjw, Stratos Karafotis, Dirk Brandewie
From: Stratos Karafotis <stratosk@semaphore.gr>
The specific rounding adds conditionally only 1/256 to fractional
part of core_pct.
We can safely remove it without any noticeable impact in
calculations.
Use div64_u64 instead of div_u64 to avoid possible overflow of
sample->mperf as divisor
Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
---
drivers/cpufreq/intel_pstate.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 33a09da..dc6e6bf 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -545,13 +545,9 @@ static inline void intel_pstate_calc_busy(struct cpudata *cpu)
{
struct sample *sample = &cpu->sample;
int64_t core_pct;
- int32_t rem;
core_pct = int_tofp(sample->aperf) * int_tofp(100);
- core_pct = div_u64_rem(core_pct, int_tofp(sample->mperf), &rem);
-
- if ((rem << 1) >= int_tofp(sample->mperf))
- core_pct += 1;
+ core_pct = div64_u64(core_pct, int_tofp(sample->mperf));
sample->freq = fp_toint(
mul_fp(int_tofp(cpu->pstate.max_pstate * 1000), core_pct));
--
1.9.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 11/11] cpufreq: intel_pstate: Keep values in aperf/mperf in full precision
2014-07-18 15:37 [PATCH 00/11] intel_pstate updates dirk.brandewie
` (10 preceding siblings ...)
2014-07-18 15:37 ` [PATCH 10/11] cpufreq: intel_pstate: Remove core_pct rounding dirk.brandewie
@ 2014-07-18 15:37 ` dirk.brandewie
2014-07-19 20:31 ` [PATCH 00/11] intel_pstate updates Rafael J. Wysocki
12 siblings, 0 replies; 17+ messages in thread
From: dirk.brandewie @ 2014-07-18 15:37 UTC (permalink / raw)
To: linux-pm; +Cc: rjw, Stratos Karafotis, Dirk Brandewie
From: Stratos Karafotis <stratosk@semaphore.gr>
Currently we shift right aperf and mperf variables by FRAC_BITS
to prevent overflow when we convert them to fix point numbers
(shift left by FRAC_BITS).
But this is not necessary, because we actually use delta aperf and mperf
which are much less than APERF and MPERF values.
So, use the unmodified APERF and MPERF values in calculation.
This also adds 8 bits in precision, although the gain is insignificant.
Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
---
drivers/cpufreq/intel_pstate.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index dc6e6bf..c5eac94 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -565,9 +565,6 @@ static inline void intel_pstate_sample(struct cpudata *cpu)
rdmsrl(MSR_IA32_MPERF, mperf);
local_irq_restore(flags);
- aperf = aperf >> FRAC_BITS;
- mperf = mperf >> FRAC_BITS;
-
cpu->last_sample_time = cpu->sample.time;
cpu->sample.time = ktime_get();
cpu->sample.aperf = aperf;
--
1.9.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 00/11] intel_pstate updates
2014-07-18 15:37 [PATCH 00/11] intel_pstate updates dirk.brandewie
` (11 preceding siblings ...)
2014-07-18 15:37 ` [PATCH 11/11] cpufreq: intel_pstate: Keep values in aperf/mperf in full precision dirk.brandewie
@ 2014-07-19 20:31 ` Rafael J. Wysocki
2014-07-19 21:01 ` Stratos Karafotis
12 siblings, 1 reply; 17+ messages in thread
From: Rafael J. Wysocki @ 2014-07-19 20:31 UTC (permalink / raw)
To: dirk.brandewie; +Cc: linux-pm, Dirk Brandewie, Stratos Karafotis
On Friday, July 18, 2014 08:37:16 AM dirk.brandewie@gmail.com wrote:
> From: Dirk Brandewie <dirk.j.brandewie@intel.com>
>
> These patches have been in the development branch used by Stratos,
> Doug and myself for a long time. I had hoped to batch them up with
> other functional changes that are under development but those changes
> are still under active discussion and there is no reason to hold these
> changes up.
>
> Based on v3.16-rc5 commit 1795cd9b3a91d4b5473c97f491d63892442212ab
>
> Stratos Karafotis (11):
> cpufreq: intel_pstate: Make intel_pstate_kobject and debugfs_parent
> locals
> cpufreq: intel_pstate: Remove unnecessary type casting in div_s64()
> call
> cpufreq: intel_pstate: Add missing blank lines after declarations
> cpufreq: intel_pstate: Fit code in a single line where possible
> cpufreq: intel_pstate: Cleanup parentheses
> cpufreq: intel_pstate: Remove unnecessary intermediate variable
> sample_time
> cpufreq: intel_pstate: Align multiple lines to open parenthesis
> cpufreq: intel_pstate: Disable interrupts during MSRs reading
> cpufreq: intel_pstate: Simplify P state adjustment logic.
> cpufreq: intel_pstate: Remove core_pct rounding
> cpufreq: intel_pstate: Keep values in aperf/mperf in full precision
[11/11] appears to be the same as the patch marked [9/17] which I guess
was posted by mistake. Other than that, looks good. Queued up for 3.17,
thanks!
>
> drivers/cpufreq/intel_pstate.c | 131 +++++++++++++++++------------------------
> 1 file changed, 53 insertions(+), 78 deletions(-)
>
>
--
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 00/11] intel_pstate updates
2014-07-19 20:31 ` [PATCH 00/11] intel_pstate updates Rafael J. Wysocki
@ 2014-07-19 21:01 ` Stratos Karafotis
2014-07-19 21:54 ` Rafael J. Wysocki
0 siblings, 1 reply; 17+ messages in thread
From: Stratos Karafotis @ 2014-07-19 21:01 UTC (permalink / raw)
To: Rafael J. Wysocki, dirk.brandewie; +Cc: linux-pm, Dirk Brandewie
On 19/07/2014 11:31 μμ, Rafael J. Wysocki wrote:
> On Friday, July 18, 2014 08:37:16 AM dirk.brandewie@gmail.com wrote:
>> From: Dirk Brandewie <dirk.j.brandewie@intel.com>
>>
>> These patches have been in the development branch used by Stratos,
>> Doug and myself for a long time. I had hoped to batch them up with
>> other functional changes that are under development but those changes
>> are still under active discussion and there is no reason to hold these
>> changes up.
>>
>> Based on v3.16-rc5 commit 1795cd9b3a91d4b5473c97f491d63892442212ab
>>
>> Stratos Karafotis (11):
>> cpufreq: intel_pstate: Make intel_pstate_kobject and debugfs_parent
>> locals
>> cpufreq: intel_pstate: Remove unnecessary type casting in div_s64()
>> call
>> cpufreq: intel_pstate: Add missing blank lines after declarations
>> cpufreq: intel_pstate: Fit code in a single line where possible
>> cpufreq: intel_pstate: Cleanup parentheses
>> cpufreq: intel_pstate: Remove unnecessary intermediate variable
>> sample_time
>> cpufreq: intel_pstate: Align multiple lines to open parenthesis
>> cpufreq: intel_pstate: Disable interrupts during MSRs reading
>> cpufreq: intel_pstate: Simplify P state adjustment logic.
>> cpufreq: intel_pstate: Remove core_pct rounding
>> cpufreq: intel_pstate: Keep values in aperf/mperf in full precision
>
> [11/11] appears to be the same as the patch marked [9/17] which I guess
> was posted by mistake. Other than that, looks good. Queued up for 3.17,
> thanks!
The only difference between them is the last 2 lines in changelog.
[11/11] is the correct one.
The final code in bleeding-edge is, of course, correct.
I'm sorry that I didn't notice this earlier.
Stratos
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 00/11] intel_pstate updates
2014-07-19 21:01 ` Stratos Karafotis
@ 2014-07-19 21:54 ` Rafael J. Wysocki
2014-07-19 22:05 ` Stratos Karafotis
0 siblings, 1 reply; 17+ messages in thread
From: Rafael J. Wysocki @ 2014-07-19 21:54 UTC (permalink / raw)
To: Stratos Karafotis; +Cc: dirk.brandewie, linux-pm, Dirk Brandewie
On Sunday, July 20, 2014 12:01:54 AM Stratos Karafotis wrote:
> On 19/07/2014 11:31 μμ, Rafael J. Wysocki wrote:
> > On Friday, July 18, 2014 08:37:16 AM dirk.brandewie@gmail.com wrote:
> >> From: Dirk Brandewie <dirk.j.brandewie@intel.com>
> >>
> >> These patches have been in the development branch used by Stratos,
> >> Doug and myself for a long time. I had hoped to batch them up with
> >> other functional changes that are under development but those changes
> >> are still under active discussion and there is no reason to hold these
> >> changes up.
> >>
> >> Based on v3.16-rc5 commit 1795cd9b3a91d4b5473c97f491d63892442212ab
> >>
> >> Stratos Karafotis (11):
> >> cpufreq: intel_pstate: Make intel_pstate_kobject and debugfs_parent
> >> locals
> >> cpufreq: intel_pstate: Remove unnecessary type casting in div_s64()
> >> call
> >> cpufreq: intel_pstate: Add missing blank lines after declarations
> >> cpufreq: intel_pstate: Fit code in a single line where possible
> >> cpufreq: intel_pstate: Cleanup parentheses
> >> cpufreq: intel_pstate: Remove unnecessary intermediate variable
> >> sample_time
> >> cpufreq: intel_pstate: Align multiple lines to open parenthesis
> >> cpufreq: intel_pstate: Disable interrupts during MSRs reading
> >> cpufreq: intel_pstate: Simplify P state adjustment logic.
> >> cpufreq: intel_pstate: Remove core_pct rounding
> >> cpufreq: intel_pstate: Keep values in aperf/mperf in full precision
> >
> > [11/11] appears to be the same as the patch marked [9/17] which I guess
> > was posted by mistake. Other than that, looks good. Queued up for 3.17,
> > thanks!
>
> The only difference between them is the last 2 lines in changelog.
> [11/11] is the correct one.
> The final code in bleeding-edge is, of course, correct.
>
> I'm sorry that I didn't notice this earlier.
No big deal.
I fixed up the changelog in my tree internally, will propagate to linux-pm
with the next push.
Thanks!
--
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 00/11] intel_pstate updates
2014-07-19 21:54 ` Rafael J. Wysocki
@ 2014-07-19 22:05 ` Stratos Karafotis
0 siblings, 0 replies; 17+ messages in thread
From: Stratos Karafotis @ 2014-07-19 22:05 UTC (permalink / raw)
To: Rafael J. Wysocki; +Cc: dirk.brandewie, linux-pm, Dirk Brandewie
On 20/07/2014 12:54 πμ, Rafael J. Wysocki wrote:
> On Sunday, July 20, 2014 12:01:54 AM Stratos Karafotis wrote:
>> On 19/07/2014 11:31 μμ, Rafael J. Wysocki wrote:
>>> On Friday, July 18, 2014 08:37:16 AM dirk.brandewie@gmail.com wrote:
>>>> From: Dirk Brandewie <dirk.j.brandewie@intel.com>
>>>>
>>>> These patches have been in the development branch used by Stratos,
>>>> Doug and myself for a long time. I had hoped to batch them up with
>>>> other functional changes that are under development but those changes
>>>> are still under active discussion and there is no reason to hold these
>>>> changes up.
>>>>
>>>> Based on v3.16-rc5 commit 1795cd9b3a91d4b5473c97f491d63892442212ab
>>>>
>>>> Stratos Karafotis (11):
>>>> cpufreq: intel_pstate: Make intel_pstate_kobject and debugfs_parent
>>>> locals
>>>> cpufreq: intel_pstate: Remove unnecessary type casting in div_s64()
>>>> call
>>>> cpufreq: intel_pstate: Add missing blank lines after declarations
>>>> cpufreq: intel_pstate: Fit code in a single line where possible
>>>> cpufreq: intel_pstate: Cleanup parentheses
>>>> cpufreq: intel_pstate: Remove unnecessary intermediate variable
>>>> sample_time
>>>> cpufreq: intel_pstate: Align multiple lines to open parenthesis
>>>> cpufreq: intel_pstate: Disable interrupts during MSRs reading
>>>> cpufreq: intel_pstate: Simplify P state adjustment logic.
>>>> cpufreq: intel_pstate: Remove core_pct rounding
>>>> cpufreq: intel_pstate: Keep values in aperf/mperf in full precision
>>>
>>> [11/11] appears to be the same as the patch marked [9/17] which I guess
>>> was posted by mistake. Other than that, looks good. Queued up for 3.17,
>>> thanks!
>>
>> The only difference between them is the last 2 lines in changelog.
>> [11/11] is the correct one.
>> The final code in bleeding-edge is, of course, correct.
>>
>> I'm sorry that I didn't notice this earlier.
>
> No big deal.
>
> I fixed up the changelog in my tree internally, will propagate to linux-pm
> with the next push.
Thank you!
Stratos
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2014-07-19 22:05 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-18 15:37 [PATCH 00/11] intel_pstate updates dirk.brandewie
2014-07-18 15:37 ` [PATCH 01/11] cpufreq: intel_pstate: Make intel_pstate_kobject and debugfs_parent locals dirk.brandewie
2014-07-18 15:37 ` [PATCH 02/11] cpufreq: intel_pstate: Remove unnecessary type casting in div_s64() call dirk.brandewie
2014-07-18 15:37 ` [PATCH 03/11] cpufreq: intel_pstate: Add missing blank lines after declarations dirk.brandewie
2014-07-18 15:37 ` [PATCH 04/11] cpufreq: intel_pstate: Fit code in a single line where possible dirk.brandewie
2014-07-18 15:37 ` [PATCH 05/11] cpufreq: intel_pstate: Cleanup parentheses dirk.brandewie
2014-07-18 15:37 ` [PATCH 06/11] cpufreq: intel_pstate: Remove unnecessary intermediate variable sample_time dirk.brandewie
2014-07-18 15:37 ` [PATCH 07/11] cpufreq: intel_pstate: Align multiple lines to open parenthesis dirk.brandewie
2014-07-18 15:37 ` [PATCH 08/11] cpufreq: intel_pstate: Disable interrupts during MSRs reading dirk.brandewie
2014-07-18 15:37 ` [PATCH 09/17] cpufreq: intel_pstate: Keep values in aperf/mperf in full precision dirk.brandewie
2014-07-18 15:37 ` [PATCH 09/11] cpufreq: intel_pstate: Simplify P state adjustment logic dirk.brandewie
2014-07-18 15:37 ` [PATCH 10/11] cpufreq: intel_pstate: Remove core_pct rounding dirk.brandewie
2014-07-18 15:37 ` [PATCH 11/11] cpufreq: intel_pstate: Keep values in aperf/mperf in full precision dirk.brandewie
2014-07-19 20:31 ` [PATCH 00/11] intel_pstate updates Rafael J. Wysocki
2014-07-19 21:01 ` Stratos Karafotis
2014-07-19 21:54 ` Rafael J. Wysocki
2014-07-19 22:05 ` Stratos Karafotis
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).