The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: Andreas Herrmann <aherrmann@suse.com>,
	Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Frederic Weisbecker <frederic@kernel.org>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	Linux PM <linux-pm@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: [PATCH] cpufreq: intel_pstate: Load when ACPI PCCH is present
Date: Tue, 17 Jul 2018 18:13:19 +0200	[thread overview]
Message-ID: <8115130.Fhkpr82c7G@aspire.rjw.lan> (raw)
In-Reply-To: <20180717140336.ayovaz4ksdlak6bb@suselix>

From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

Currently, intel_pstate doesn't load if _PSS is not present on
HP Proliant systems, because it expects the firmware to take over
CPU performance scaling in that case.  However, if ACPI PCCH is
present, the firmware expects the kernel to use it for CPU
performance scaling and the pcc-cpufreq driver is loaded for that.

Unfortunately, the firmware interface used by that driver is not
scalable for fundamental reasons, so pcc-cpufreq is way suboptimal
on systems with more than just a few CPUs.  In fact, it is better to
avoid using it at all.

For this reason, modify intel_pstate to look for ACPI PCCH if _PSS
is not present and load if it is there.

Fixes: fbbcdc0744da (intel_pstate: skip the driver if ACPI has power mgmt option)
Reported-by: Andreas Herrmann <aherrmann@suse.com>
Tested-by: Andreas Herrmann <aherrmann@suse.com>
Reviewed-by: Andreas Herrmann <aherrmann@suse.com>
Cc: 4.17+ <stable@vger.kernel.org> # 4.17+
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
 drivers/cpufreq/intel_pstate.c |   17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

Index: linux-pm/drivers/cpufreq/intel_pstate.c
===================================================================
--- linux-pm.orig/drivers/cpufreq/intel_pstate.c
+++ linux-pm/drivers/cpufreq/intel_pstate.c
@@ -2391,6 +2391,18 @@ static bool __init intel_pstate_no_acpi_
 	return true;
 }
 
+static bool __init intel_pstate_no_acpi_pcch(void)
+{
+	acpi_status status;
+	acpi_handle handle;
+
+	status = acpi_get_handle(NULL, "\\_SB", &handle);
+	if (ACPI_FAILURE(status))
+		return true;
+
+	return !acpi_has_method(handle, "PCCH");
+}
+
 static bool __init intel_pstate_has_acpi_ppc(void)
 {
 	int i;
@@ -2450,7 +2462,10 @@ static bool __init intel_pstate_platform
 
 	switch (plat_info[idx].data) {
 	case PSS:
-		return intel_pstate_no_acpi_pss();
+		if (!intel_pstate_no_acpi_pss())
+			return false;
+
+		return intel_pstate_no_acpi_pcch();
 	case PPC:
 		return intel_pstate_has_acpi_ppc() && !force_load;
 	}


  parent reply	other threads:[~2018-07-17 16:15 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-17  6:50 Commit 554c8aa8ecad causing severe performance degression with pcc-cpufreq Andreas Herrmann
2018-07-17  7:33 ` Rafael J. Wysocki
2018-07-17  8:03   ` Rafael J. Wysocki
2018-07-17  8:50     ` Andreas Herrmann
2018-07-17  8:58       ` Rafael J. Wysocki
2018-07-17  9:06       ` Rafael J. Wysocki
2018-07-17  9:11         ` Andreas Herrmann
2018-07-17  9:23           ` Rafael J. Wysocki
2018-07-17  9:27             ` Andreas Herrmann
2018-07-17  9:36               ` Andreas Herrmann
2018-07-17 10:09                 ` Rafael J. Wysocki
2018-07-17 10:21                   ` Andreas Herrmann
2018-07-17 10:23                     ` Rafael J. Wysocki
2018-07-17 14:03                     ` Andreas Herrmann
2018-07-17 15:29                       ` Rafael J. Wysocki
2018-07-17 16:13                       ` Rafael J. Wysocki [this message]
2018-07-17 17:23                         ` [PATCH] cpufreq: intel_pstate: Load when ACPI PCCH is present Srinivas Pandruvada
2018-07-17 17:28                           ` Rafael J. Wysocki
2018-07-17 18:06                         ` [PATCH] cpufreq: intel_pstate: Register " Rafael J. Wysocki
2018-07-18 10:43                           ` Andreas Herrmann
2018-07-18 10:51                             ` Rafael J. Wysocki
2018-07-17 10:18                 ` Commit 554c8aa8ecad causing severe performance degression with pcc-cpufreq Andreas Herrmann
2018-07-17  8:08   ` Daniel Lezcano
2018-07-17  8:36   ` Andreas Herrmann
2018-07-17  8:52     ` Rafael J. Wysocki
2018-07-17  8:15 ` Peter Zijlstra
2018-07-17  9:05   ` Andreas Herrmann
2018-07-17 12:02 ` [PATCH] cpufreq: pcc-cpufreq: Disable dynamic scaling on many-CPU systems Rafael J. Wysocki
2018-07-17 16:14   ` [PATCH v2] " Rafael J. Wysocki
2018-07-17 20:13     ` Andreas Herrmann
2018-07-18  7:44       ` Rafael J. Wysocki
2018-07-18  8:23       ` Peter Zijlstra
2018-07-18  9:34         ` Andreas Herrmann
2018-07-18 15:25 ` Commit 554c8aa8ecad causing severe performance degression with pcc-cpufreq Andreas Herrmann
2018-07-18 15:31   ` Andreas Herrmann
2018-07-19 11:04     ` Andreas Herrmann

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=8115130.Fhkpr82c7G@aspire.rjw.lan \
    --to=rjw@rjwysocki.net \
    --cc=aherrmann@suse.com \
    --cc=frederic@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=rafael.j.wysocki@intel.com \
    --cc=srinivas.pandruvada@linux.intel.com \
    --cc=viresh.kumar@linaro.org \
    /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