Commit 4d81b0f9 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki

cpufreq: pcc-cpufreq: Disable dynamic scaling on many-CPU systems

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: default avatarAndreas Herrmann <aherrmann@suse.com>
Tested-by: default avatarAndreas Herrmann <aherrmann@suse.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent f54ab690
...@@ -589,6 +589,15 @@ static int __init pcc_cpufreq_init(void) ...@@ -589,6 +589,15 @@ static int __init pcc_cpufreq_init(void)
return ret; return ret;
} }
if (num_present_cpus() > 4) {
pcc_cpufreq_driver.flags |= CPUFREQ_NO_AUTO_DYNAMIC_SWITCHING;
pr_err("%s: Too many CPUs, dynamic performance scaling disabled\n",
__func__);
pr_err("%s: Try to enable another scaling driver through BIOS settings\n",
__func__);
pr_err("%s: and complain to the system vendor\n", __func__);
}
ret = cpufreq_register_driver(&pcc_cpufreq_driver); ret = cpufreq_register_driver(&pcc_cpufreq_driver);
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment