lkml.org 
[lkml]   [2018]   [Jul]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] cpufreq: pcc-cpufreq: Disable dynamic scaling on many-CPU systems
    Date
    From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

    The firmware interface used by the pcc-cpufreq driver is
    fundamentally not scalable and using it for dynamic CPU performance
    scaling on systems with many CPUs leads to degraded performance.

    For this reason, disable dynamic CPU performance scaling on systems
    with pcc-cpufreq where the number of CPUs present at the driver init
    time is greater than 4. Also make the driver print corresponding
    complaints to the kernel log.

    Reported-by: Andreas Herrmann <aherrmann@suse.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    ---
    drivers/cpufreq/pcc-cpufreq.c | 8 ++++++++
    1 file changed, 8 insertions(+)

    Index: linux-pm/drivers/cpufreq/pcc-cpufreq.c
    ===================================================================
    --- linux-pm.orig/drivers/cpufreq/pcc-cpufreq.c
    +++ linux-pm/drivers/cpufreq/pcc-cpufreq.c
    @@ -589,6 +589,14 @@ static int __init pcc_cpufreq_init(void)
    return ret;
    }

    + if (num_present_cpus() > 4) {
    + pcc_cpufreq_driver.flags |= CPUFREQ_NO_AUTO_DYNAMIC_SWITCHING;
    + pr_err("%s: Unsuitable system, dynamic performance scaling disabled\n",
    + __func__);
    + pr_err("%s: Change BIOS settings and complain to the hardware vendor\n",
    + __func__);
    + }
    +
    ret = cpufreq_register_driver(&pcc_cpufreq_driver);

    return ret;
    \
     
     \ /
      Last update: 2018-07-17 14:05    [W:3.325 / U:0.188 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site