Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1589110
| Path | csiph.com!aioe.org!bofh.it!news.nic.it!robomod |
|---|---|
| From | Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> |
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH] cpufreq: intel_pstate: Fix operation mode switching |
| Date | Tue, 28 Feb 2017 03:20:02 +0100 |
| Message-ID | <tfFyq-6b3-1@gated-at.bofh.it> (permalink) |
| References | <tfCKe-4br-5@gated-at.bofh.it> |
| X-Extloop1 | 1 |
| X-Ironport-Av | E=Sophos;i="5.35,217,1484035200"; d="scan'208";a="230414549" |
| Content-Type | text/plain; charset="UTF-8" |
| X-Mailer | Evolution 3.22.4 (3.22.4-2.fc25) |
| MIME-Version | 1.0 |
| Content-Transfer-Encoding | 8bit |
| Sender | robomod@news.nic.it |
| List-ID | <linux-kernel.vger.kernel.org> |
| X-Mailing-List | linux-kernel@vger.kernel.org |
| Approved | robomod@news.nic.it |
| Lines | 121 |
| Organization | linux.* mail to news gateway |
| X-Original-Cc | LKML <linux-kernel@vger.kernel.org> |
| X-Original-Date | Mon, 27 Feb 2017 18:11:47 -0800 |
| X-Original-Message-ID | <1488247907.4085.0.camel@linux.intel.com> |
| X-Original-References | <2958124.3ADodeN5Y5@aspire.rjw.lan> |
| X-Original-Sender | linux-kernel-owner@vger.kernel.org |
| Xref | csiph.com linux.kernel:1589110 |
Show key headers only | View raw
On Tue, 2017-02-28 at 00:05 +0100, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
>
> There is a problem with intel_pstate operation mode switching
> introduced by commit fb1fe1041c04 (cpufreq: intel_pstate: Operation
> mode control from sysfs), because the global sysfs limits are
> preserved across operation modes while per-policy limits are
> reinitialized from scratch and both sets of limits may get out of
> sync this wya.
>
> Fix that by always reinitializing the global limits upon the
> registration of the driver.
>
> Fixes: fb1fe1041c04 (cpufreq: intel_pstate: Operation mode control
> from sysfs)
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
> ---
> drivers/cpufreq/intel_pstate.c | 65 +++++++++++++-----------------
> -----------
> 1 file changed, 22 insertions(+), 43 deletions(-)
>
> Index: linux-pm/drivers/cpufreq/intel_pstate.c
> ===================================================================
> --- linux-pm.orig/drivers/cpufreq/intel_pstate.c
> +++ linux-pm/drivers/cpufreq/intel_pstate.c
> @@ -364,37 +364,25 @@ static bool driver_registered __read_mos
> static bool acpi_ppc;
> #endif
>
> -static struct perf_limits performance_limits = {
> - .no_turbo = 0,
> - .turbo_disabled = 0,
> - .max_perf_pct = 100,
> - .max_perf = int_ext_tofp(1),
> - .min_perf_pct = 100,
> - .min_perf = int_ext_tofp(1),
> - .max_policy_pct = 100,
> - .max_sysfs_pct = 100,
> - .min_policy_pct = 0,
> - .min_sysfs_pct = 0,
> -};
> +static struct perf_limits performance_limits;
> +static struct perf_limits powersave_limits;
> +static struct perf_limits *limits;
>
> -static struct perf_limits powersave_limits = {
> - .no_turbo = 0,
> - .turbo_disabled = 0,
> - .max_perf_pct = 100,
> - .max_perf = int_ext_tofp(1),
> - .min_perf_pct = 0,
> - .min_perf = 0,
> - .max_policy_pct = 100,
> - .max_sysfs_pct = 100,
> - .min_policy_pct = 0,
> - .min_sysfs_pct = 0,
> -};
> +static void intel_pstate_init_limits(struct perf_limits *limits)
> +{
> + memset(limits, 0, sizeof(*limits));
> + limits->max_perf_pct = 100;
> + limits->max_perf = int_ext_tofp(1);
> + limits->max_policy_pct = 100;
> + limits->max_sysfs_pct = 100;
> +}
>
> -#ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE
> -static struct perf_limits *limits = &performance_limits;
> -#else
> -static struct perf_limits *limits = &powersave_limits;
> -#endif
> +static void intel_pstate_set_performance_limits(struct perf_limits
> *limits)
> +{
> + intel_pstate_init_limits(limits);
> + limits->min_perf_pct = 100;
> + limits->min_perf = int_ext_tofp(1);
> +}
>
> static DEFINE_MUTEX(intel_pstate_driver_lock);
> static DEFINE_MUTEX(intel_pstate_limits_lock);
> @@ -2084,20 +2072,6 @@ static void intel_pstate_clear_update_ut
> synchronize_sched();
> }
>
> -static void intel_pstate_set_performance_limits(struct perf_limits
> *limits)
> -{
> - limits->no_turbo = 0;
> - limits->turbo_disabled = 0;
> - limits->max_perf_pct = 100;
> - limits->max_perf = int_ext_tofp(1);
> - limits->min_perf_pct = 100;
> - limits->min_perf = int_ext_tofp(1);
> - limits->max_policy_pct = 100;
> - limits->max_sysfs_pct = 100;
> - limits->min_policy_pct = 0;
> - limits->min_sysfs_pct = 0;
> -}
> -
> static void intel_pstate_update_perf_limits(struct cpufreq_policy
> *policy,
> struct perf_limits
> *limits)
> {
> @@ -2466,6 +2440,11 @@ static int intel_pstate_register_driver(
> {
> int ret;
>
> + intel_pstate_init_limits(&powersave_limits);
> + intel_pstate_set_performance_limits(&performance_limits);
> + limits = IS_ENABLED(CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE)
> ?
> + &performance_limits : &powersave_limits;
> +
> ret = cpufreq_register_driver(intel_pstate_driver);
> if (ret) {
> intel_pstate_driver_cleanup();
>
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
[PATCH] cpufreq: intel_pstate: Fix operation mode switching "Rafael J. Wysocki" <rjw@rjwysocki.net> - 2017-02-28 00:20 +0100 Re: [PATCH] cpufreq: intel_pstate: Fix operation mode switching Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> - 2017-02-28 03:20 +0100
csiph-web