intel_pstate: add kernel parameter to force loading
authorEthan Zhao <ethan.zhao@oracle.com>
Tue, 9 Dec 2014 01:43:19 +0000 (10:43 +0900)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 10 Dec 2014 23:23:48 +0000 (00:23 +0100)
To force loading on Oracle Sun X86 servers, provide one kernel command line
parameter

  intel_pstate = force

For those who are aware of the risk of no power capping capabily working
and try to get better performance with this driver.

Signed-off-by: Ethan Zhao <ethan.zhao@oracle.com>
Tested-by: Alexey Kodanev <alexey.kodanev@oracle.com>
Reviewed-by: Linda Knippers <linda.knippers@hp.com>
Acked-by: Kristen Carlson Accardi <kristen@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Documentation/kernel-parameters.txt
drivers/cpufreq/intel_pstate.c

index 5fdf714f40a067a02b35b41c1e56117b4854c72c..d006bb22f3cac5fd6d6b47f6a4c5a675beedef03 100644 (file)
@@ -1446,6 +1446,15 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
                       disable
                         Do not enable intel_pstate as the default
                         scaling driver for the supported processors
+                      force
+                        Enable intel_pstate on systems that prohibit it by default
+                        in favor of acpi-cpufreq. Forcing the intel_pstate driver
+                        instead of acpi-cpufreq may disable platform features, such
+                        as thermal controls and power capping, that rely on ACPI
+                        P-States information being indicated to OSPM and therefore
+                        should be used with caution. This option does not work with
+                        processors that aren't supported by the intel_pstate driver
+                        or on platforms that use pcc-cpufreq instead of acpi-cpufreq.
                       no_hwp
                         Do not enable hardware P state control (HWP)
                         if available.
index 1405b393c93d90f68ac77f3ba9e23e223bcb80a3..0e841eecb74336f2f0d5d6b98f47874163ca4c6c 100644 (file)
@@ -948,6 +948,7 @@ static struct cpufreq_driver intel_pstate_driver = {
 
 static int __initdata no_load;
 static int __initdata no_hwp;
+static unsigned int force_load;
 
 static int intel_pstate_msrs_not_valid(void)
 {
@@ -1094,7 +1095,8 @@ static bool intel_pstate_platform_pwr_mgmt_exists(void)
                        case PSS:
                                return intel_pstate_no_acpi_pss();
                        case PPC:
-                               return intel_pstate_has_acpi_ppc();
+                               return intel_pstate_has_acpi_ppc() &&
+                                       (!force_load);
                        }
        }
 
@@ -1175,6 +1177,8 @@ static int __init intel_pstate_setup(char *str)
                no_load = 1;
        if (!strcmp(str, "no_hwp"))
                no_hwp = 1;
+       if (!strcmp(str, "force"))
+               force_load = 1;
        return 0;
 }
 early_param("intel_pstate", intel_pstate_setup);