From: Francisco Jerez <currojerez@riseup.net>
To: linux-pm@vger.kernel.org, intel-gfx@lists.freedesktop.org,
Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Cc: Eero Tamminen <eero.t.tamminen@intel.com>,
"Rafael J. Wysocki" <rjw@rjwysocki.net>
Subject: [PATCH 7/9] SQUASH: cpufreq/intel_pstate: Enable LP controller based on ACPI FADT profile.
Date: Tue, 27 Mar 2018 23:38:43 -0700 [thread overview]
Message-ID: <20180328063845.4884-8-currojerez@riseup.net> (raw)
In-Reply-To: <20180328063845.4884-1-currojerez@riseup.net>
This is provided at Srinivas' request. The LP controller is disabled
for the moment on server FADT profiles in order to avoid disturbing
the performance behavior of small-core servers. In cases where the
default inferred from the BIOS FADT profile is suboptimal, the LP
controller can be forcefully enabled or disabled by passing
"intel_pstate=lp" or "intel_pstate=no_lp" respectively in the kernel
command line.
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
---
Documentation/admin-guide/kernel-parameters.txt | 6 +++++
Documentation/admin-guide/pm/intel_pstate.rst | 7 ++++++
drivers/cpufreq/intel_pstate.c | 32 ++++++++++++++++++++++++-
3 files changed, 44 insertions(+), 1 deletion(-)
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 1d1d53f85ddd..0ba112696938 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -1681,6 +1681,12 @@
per_cpu_perf_limits
Allow per-logical-CPU P-State performance control limits using
cpufreq sysfs interface
+ lp
+ Force use of LP P-state controller. Overrides selection
+ derived from ACPI FADT profile. Has no effect if HWP is
+ available.
+ no_lp
+ Prevent use of LP P-state controller (see "lp" parameter).
intremap= [X86-64, Intel-IOMMU]
on enable Interrupt Remapping (default)
diff --git a/Documentation/admin-guide/pm/intel_pstate.rst b/Documentation/admin-guide/pm/intel_pstate.rst
index d2b6fda3d67b..a5885fc4c039 100644
--- a/Documentation/admin-guide/pm/intel_pstate.rst
+++ b/Documentation/admin-guide/pm/intel_pstate.rst
@@ -642,6 +642,13 @@ of them have to be prepended with the ``intel_pstate=`` prefix.
Use per-logical-CPU P-State limits (see `Coordination of P-state
Limits`_ for details).
+``lp``
+ Force use of LP P-state controller. Overrides selection derived
+ from ACPI FADT profile. Has no effect if HWP is available.
+
+``no_lp``
+ Prevent use of LP P-state controller (see "lp" parameter).
+
Diagnostics and Tuning
======================
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index d4b5d0aaa282..d0e212387755 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -2485,6 +2485,7 @@ static int intel_pstate_update_status(const char *buf, size_t size)
static int no_load __initdata;
static int no_hwp __initdata;
+static int no_lp __initdata;
static int hwp_only __initdata;
static unsigned int force_load __initdata;
@@ -2507,8 +2508,12 @@ static void __init copy_cpu_funcs(struct pstate_funcs *funcs)
pstate_funcs.get_scaling = funcs->get_scaling;
pstate_funcs.get_val = funcs->get_val;
pstate_funcs.get_vid = funcs->get_vid;
- pstate_funcs.update_util = funcs->update_util;
pstate_funcs.get_aperf_mperf_shift = funcs->get_aperf_mperf_shift;
+
+ if (no_lp)
+ pstate_funcs.update_util = intel_pstate_update_util;
+ else
+ pstate_funcs.update_util = funcs->update_util;
}
#ifdef CONFIG_ACPI
@@ -2690,6 +2695,25 @@ static int __init intel_pstate_init(void)
}
device_initcall(intel_pstate_init);
+#ifdef CONFIG_ACPI
+static bool __init is_server_acpi_profile(void)
+{
+ switch (acpi_gbl_FADT.preferred_profile) {
+ case PM_ENTERPRISE_SERVER:
+ case PM_SOHO_SERVER:
+ case PM_PERFORMANCE_SERVER:
+ return true;
+ default:
+ return false;
+ }
+}
+#else
+static bool __init is_server_acpi_profile(void)
+{
+ return false;
+}
+#endif
+
static int __init intel_pstate_setup(char *str)
{
if (!str)
@@ -2713,6 +2737,12 @@ static int __init intel_pstate_setup(char *str)
if (!strcmp(str, "per_cpu_perf_limits"))
per_cpu_limits = true;
+ no_lp = is_server_acpi_profile();
+ if (!strcmp(str, "lp"))
+ no_lp = 0;
+ if (!strcmp(str, "no_lp"))
+ no_lp = 1;
+
#ifdef CONFIG_ACPI
if (!strcmp(str, "support_acpi_ppc"))
acpi_ppc = true;
--
2.16.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2018-03-28 6:38 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-28 6:38 [PATCH 0/9] GPU-bound energy efficiency improvements for the intel_pstate driver Francisco Jerez
2018-03-28 6:38 ` [PATCH 1/9] cpufreq: Implement infrastructure keeping track of aggregated IO active time Francisco Jerez
2018-03-28 6:38 ` [PATCH 2/9] Revert "cpufreq: intel_pstate: Replace bxt_funcs with core_funcs" Francisco Jerez
2018-03-28 6:38 ` [PATCH 3/9] Revert "cpufreq: intel_pstate: Shorten a couple of long names" Francisco Jerez
2018-03-28 6:38 ` [PATCH 4/9] Revert "cpufreq: intel_pstate: Simplify intel_pstate_adjust_pstate()" Francisco Jerez
2018-03-28 6:38 ` [PATCH 5/9] Revert "cpufreq: intel_pstate: Drop ->update_util from pstate_funcs" Francisco Jerez
2018-03-28 6:38 ` [PATCH 6/9] cpufreq/intel_pstate: Implement variably low-pass filtering controller for small core Francisco Jerez
2018-03-28 6:38 ` Francisco Jerez [this message]
2018-03-28 6:38 ` [PATCH 8/9] OPTIONAL: cpufreq/intel_pstate: Expose LP controller parameters via debugfs Francisco Jerez
2018-03-28 6:38 ` [PATCH 9/9] drm/i915/execlists: Report GPU rendering as IO activity to cpufreq Francisco Jerez
2018-03-28 8:02 ` Chris Wilson
2018-03-28 18:55 ` Francisco Jerez
2018-03-28 19:20 ` Chris Wilson
2018-03-28 23:19 ` Chris Wilson
2018-03-29 0:32 ` Francisco Jerez
2018-03-29 1:01 ` Chris Wilson
2018-03-29 1:20 ` Chris Wilson
2018-03-30 18:50 ` [PATCH 0/9] GPU-bound energy efficiency improvements for the intel_pstate driver Francisco Jerez
2018-04-10 22:28 ` Francisco Jerez
2018-04-11 3:14 ` Srinivas Pandruvada
2018-04-11 16:10 ` Francisco Jerez
2018-04-11 16:26 ` Francisco Jerez
2018-04-11 17:35 ` Juri Lelli
2018-04-12 21:38 ` Francisco Jerez
2018-04-12 6:17 ` Srinivas Pandruvada
2018-04-14 2:00 ` Francisco Jerez
2018-04-14 4:01 ` Srinivas Pandruvada
2018-04-16 14:04 ` Eero Tamminen
2018-04-16 17:27 ` Srinivas Pandruvada
2018-04-12 8:58 ` Peter Zijlstra
2018-04-12 18:34 ` Francisco Jerez
2018-04-12 19:33 ` Peter Zijlstra
2018-04-12 19:55 ` Francisco Jerez
2018-04-13 18:15 ` Peter Zijlstra
2018-04-14 1:57 ` Francisco Jerez
2018-04-14 9:49 ` Peter Zijlstra
2018-04-17 14:03 ` Chris Wilson
2018-04-17 15:34 ` Srinivas Pandruvada
2018-04-17 19:27 ` Francisco Jerez
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180328063845.4884-8-currojerez@riseup.net \
--to=currojerez@riseup.net \
--cc=eero.t.tamminen@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=linux-pm@vger.kernel.org \
--cc=rjw@rjwysocki.net \
--cc=srinivas.pandruvada@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).