lkml.org 
[lkml]   [2018]   [Jul]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH] cpufreq: intel_pstate: Load when ACPI PCCH is present
    From
    Date
    On Tue, 2018-07-17 at 18:13 +0200, Rafael J. Wysocki wrote:
    > 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>
    Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>

    But do we need a change as done by the following commit in in pcc-
    cpufreq.c?

    "
    commit 8a61e12e84597b5f8155ac91b44dea866ccfaac2
    Author: Yinghai Lu <yinghai@kernel.org>
    Date: Fri Sep 20 10:43:56 2013 -0700

    acpi-cpufreq: skip loading acpi_cpufreq after intel_pstate

    "

    Thanks,
    Srinivas

    > ---
    > 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;
    > }
    >

    \
     
     \ /
      Last update: 2018-07-17 19:23    [W:2.875 / U:1.820 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site