Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1220405 > unrolled thread

Re: [PATCH][rfc] intel_pstate: Fix user input of min/max to legal policy region

Started by"Rafael J. Wysocki" <rjw@rjwysocki.net>
First post2015-09-07 23:20 +0200
Last post2015-09-09 04:20 +0200
Articles 2 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: [PATCH][rfc] intel_pstate: Fix user input of min/max to legal policy region "Rafael J. Wysocki" <rjw@rjwysocki.net> - 2015-09-07 23:20 +0200
    RE: [PATCH][rfc] intel_pstate: Fix user input of min/max to legal  policy region "Chen, Yu C" <yu.c.chen@intel.com> - 2015-09-09 04:20 +0200

#1220405 — Re: [PATCH][rfc] intel_pstate: Fix user input of min/max to legal policy region

From"Rafael J. Wysocki" <rjw@rjwysocki.net>
Date2015-09-07 23:20 +0200
SubjectRe: [PATCH][rfc] intel_pstate: Fix user input of min/max to legal policy region
Message-ID<q6bZw-tN-5@gated-at.bofh.it>
On Wednesday, August 12, 2015 11:49:19 AM Chen Yu wrote:
> In current code, if system is using performance policy, user can
> modify the max_perf_pct to any values lower than 100:
> 
> $ grep . /sys/devices/system/cpu/intel_pstate/m*_perf_pct
> /sys/devices/system/cpu/intel_pstate/max_perf_pct:100
> /sys/devices/system/cpu/intel_pstate/min_perf_pct:100
> 
> $ echo 80 > /sys/devices/system/cpu/intel_pstate/max_perf_pct
> 
> $ grep . /sys/devices/system/cpu/intel_pstate/m*_perf_pct
> /sys/devices/system/cpu/intel_pstate/max_perf_pct:80
> /sys/devices/system/cpu/intel_pstate/min_perf_pct:100
> 
> the max_perf_pct above is lower than min_perf_pct, which
> is not reasonable.
> 
> This patch solves this problem by clamping min_perf_pct and max_perf_pct
> to be strictly inside [min_policy_pct,max_policy_pct].
> 
> Signed-off-by: Chen Yu <yu.c.chen@intel.com>

Looks reasonable to me.

Kristen, any objections?


> ---
>  drivers/cpufreq/intel_pstate.c | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
> index fcb929e..3702c5a 100644
> --- a/drivers/cpufreq/intel_pstate.c
> +++ b/drivers/cpufreq/intel_pstate.c
> @@ -423,6 +423,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_pct = max(limits.min_policy_pct, limits.max_perf_pct);
>  	limits.max_perf = div_fp(int_tofp(limits.max_perf_pct), int_tofp(100));
>  
>  	if (hwp_active)
> @@ -442,6 +443,7 @@ static ssize_t store_min_perf_pct(struct kobject *a, struct attribute *b,
>  
>  	limits.min_sysfs_pct = clamp_t(int, input, 0 , 100);
>  	limits.min_perf_pct = max(limits.min_policy_pct, limits.min_sysfs_pct);
> +	limits.min_perf_pct = min(limits.max_policy_pct, limits.min_perf_pct);
>  	limits.min_perf = div_fp(int_tofp(limits.min_perf_pct), int_tofp(100));
>  
>  	if (hwp_active)
> @@ -985,12 +987,14 @@ static int intel_pstate_set_policy(struct cpufreq_policy *policy)
>  
>  	limits.min_policy_pct = (policy->min * 100) / policy->cpuinfo.max_freq;
>  	limits.min_policy_pct = clamp_t(int, limits.min_policy_pct, 0 , 100);
> -	limits.min_perf_pct = max(limits.min_policy_pct, limits.min_sysfs_pct);
> -	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 = clamp_t(int, limits.max_policy_pct, 0 , 100);
> +
> +	limits.min_perf_pct = max(limits.min_policy_pct, limits.min_sysfs_pct);
> +	limits.min_perf_pct = min(limits.max_policy_pct, limits.min_perf_pct);
> +	limits.min_perf = div_fp(int_tofp(limits.min_perf_pct), int_tofp(100));
>  	limits.max_perf_pct = min(limits.max_policy_pct, limits.max_sysfs_pct);
> +	limits.max_perf_pct = max(limits.min_policy_pct, limits.max_perf_pct);
>  	limits.max_perf = div_fp(int_tofp(limits.max_perf_pct), int_tofp(100));
>  
>  	if (hwp_active)
> 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1221179 — RE: [PATCH][rfc] intel_pstate: Fix user input of min/max to legal policy region

From"Chen, Yu C" <yu.c.chen@intel.com>
Date2015-09-09 04:20 +0200
SubjectRE: [PATCH][rfc] intel_pstate: Fix user input of min/max to legal policy region
Message-ID<q6D9o-660-9@gated-at.bofh.it>
In reply to#1220405
SGkgLFJhZmFlbA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFJhZmFl
bCBKLiBXeXNvY2tpIFttYWlsdG86cmp3QHJqd3lzb2NraS5uZXRdDQo+IFNlbnQ6IFR1ZXNkYXks
IFNlcHRlbWJlciAwOCwgMjAxNSA1OjQ3IEFNDQo+IFRvOiBDaGVuLCBZdSBDOyBrcmlzdGVuQGxp
bnV4LmludGVsLmNvbQ0KPiBDYzogdmlyZXNoLmt1bWFyQGxpbmFyby5vcmc7IGxpbnV4LXBtQHZn
ZXIua2VybmVsLm9yZzsgbGludXgtDQo+IGtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IFpoYW5nLCBS
dWk7IGxlbmJAa2VybmVsLm9yZw0KPiBTdWJqZWN0OiBSZTogW1BBVENIXVtyZmNdIGludGVsX3Bz
dGF0ZTogRml4IHVzZXIgaW5wdXQgb2YgbWluL21heCB0byBsZWdhbA0KPiBwb2xpY3kgcmVnaW9u
DQo+IA0KPiBPbiBXZWRuZXNkYXksIEF1Z3VzdCAxMiwgMjAxNSAxMTo0OToxOSBBTSBDaGVuIFl1
IHdyb3RlOg0KPiA+IEluIGN1cnJlbnQgY29kZSwgaWYgc3lzdGVtIGlzIHVzaW5nIHBlcmZvcm1h
bmNlIHBvbGljeSwgdXNlciBjYW4NCj4gPiBtb2RpZnkgdGhlIG1heF9wZXJmX3BjdCB0byBhbnkg
dmFsdWVzIGxvd2VyIHRoYW4gMTAwOg0KPiA+DQo+ID4gJCBncmVwIC4gL3N5cy9kZXZpY2VzL3N5
c3RlbS9jcHUvaW50ZWxfcHN0YXRlL20qX3BlcmZfcGN0DQo+ID4gL3N5cy9kZXZpY2VzL3N5c3Rl
bS9jcHUvaW50ZWxfcHN0YXRlL21heF9wZXJmX3BjdDoxMDANCj4gPiAvc3lzL2RldmljZXMvc3lz
dGVtL2NwdS9pbnRlbF9wc3RhdGUvbWluX3BlcmZfcGN0OjEwMA0KPiA+DQo+ID4gJCBlY2hvIDgw
ID4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvaW50ZWxfcHN0YXRlL21heF9wZXJmX3BjdA0KPiA+
DQo+ID4gJCBncmVwIC4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvaW50ZWxfcHN0YXRlL20qX3Bl
cmZfcGN0DQo+ID4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvaW50ZWxfcHN0YXRlL21heF9wZXJm
X3BjdDo4MA0KPiA+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2ludGVsX3BzdGF0ZS9taW5fcGVy
Zl9wY3Q6MTAwDQo+ID4NCj4gPiB0aGUgbWF4X3BlcmZfcGN0IGFib3ZlIGlzIGxvd2VyIHRoYW4g
bWluX3BlcmZfcGN0LCB3aGljaCBpcyBub3QNCj4gPiByZWFzb25hYmxlLg0KPiA+DQo+ID4gVGhp
cyBwYXRjaCBzb2x2ZXMgdGhpcyBwcm9ibGVtIGJ5IGNsYW1waW5nIG1pbl9wZXJmX3BjdCBhbmQN
Cj4gPiBtYXhfcGVyZl9wY3QgdG8gYmUgc3RyaWN0bHkgaW5zaWRlIFttaW5fcG9saWN5X3BjdCxt
YXhfcG9saWN5X3BjdF0uDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFl1IDx5dS5jLmNo
ZW5AaW50ZWwuY29tPg0KPiANCj4gTG9va3MgcmVhc29uYWJsZSB0byBtZS4NCj4gDQo+IEtyaXN0
ZW4sIGFueSBvYmplY3Rpb25zPw0KPiANClRoYW5rcyBmb3IgeW91ciByZXBseSEgDQpBY2NvcmRp
bmcgdG8gc3VnZ2VzdGlvbiBmcm9tICBTZWlpY2hpLCB3aWxsIHJlLXNlbmQgYSBWMiB2ZXJzaW9u
IHBhdGNoLA0KdG8gbWFrZSBzb21lIHVwZGF0ZS4NCg0KQmVzdCBSZWdhcmRzLA0KWXUgDQoNCg==
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web