diff mbox

[Xenial,1/1] cpufreq: intel_pstate: Enable HWP by default

Message ID 20170323053335.27132-2-kai.heng.feng@canonical.com
State New
Headers show

Commit Message

Kai-Heng Feng March 23, 2017, 5:33 a.m. UTC
From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>

BugLink: https://bugs.launchpad.net/bugs/1674390

If the processor supports HWP, enable it by default without checking
for the cpu model. This will allow to enable HWP in all supported
processors without driver change.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
(cherry picked from commit 7791e4aa59ad724e0b4c8b4dea547a5735108972)
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
 drivers/cpufreq/intel_pstate.c | 34 ++++++++++++++++++++++------------
 1 file changed, 22 insertions(+), 12 deletions(-)

Comments

Tim Gardner March 23, 2017, 12:48 p.m. UTC | #1
Positive test results
Robert Hooker March 23, 2017, 5:57 p.m. UTC | #2
On Thu, Mar 23, 2017 at 1:33 AM, Kai-Heng Feng
<kai.heng.feng@canonical.com> wrote:
> From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
>
> BugLink: https://bugs.launchpad.net/bugs/1674390
>
> If the processor supports HWP, enable it by default without checking
> for the cpu model. This will allow to enable HWP in all supported
> processors without driver change.
>
> Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> (cherry picked from commit 7791e4aa59ad724e0b4c8b4dea547a5735108972)
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
> ---
>  drivers/cpufreq/intel_pstate.c | 34 ++++++++++++++++++++++------------
>  1 file changed, 22 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
> index 7ff8b15a3422..88728d997088 100644
> --- a/drivers/cpufreq/intel_pstate.c
> +++ b/drivers/cpufreq/intel_pstate.c
> @@ -1361,6 +1361,11 @@ static inline bool intel_pstate_platform_pwr_mgmt_exists(void) { return false; }
>  static inline bool intel_pstate_has_acpi_ppc(void) { return false; }
>  #endif /* CONFIG_ACPI */
>
> +static const struct x86_cpu_id hwp_support_ids[] __initconst = {
> +       { X86_VENDOR_INTEL, 6, X86_MODEL_ANY, X86_FEATURE_HWP },
> +       {}
> +};
> +
>  static int __init intel_pstate_init(void)
>  {
>         int cpu, rc = 0;
> @@ -1370,17 +1375,16 @@ static int __init intel_pstate_init(void)
>         if (no_load)
>                 return -ENODEV;
>
> +       if (x86_match_cpu(hwp_support_ids) && !no_hwp) {
> +               copy_cpu_funcs(&core_params.funcs);
> +               hwp_active++;
> +               goto hwp_cpu_matched;
> +       }
> +
>         id = x86_match_cpu(intel_pstate_cpu_ids);
>         if (!id)
>                 return -ENODEV;
>
> -       /*
> -        * The Intel pstate driver will be ignored if the platform
> -        * firmware has its own power management modes.
> -        */
> -       if (intel_pstate_platform_pwr_mgmt_exists())
> -               return -ENODEV;
> -
>         cpu_def = (struct cpu_defaults *)id->driver_data;
>
>         copy_pid_params(&cpu_def->pid_policy);
> @@ -1389,17 +1393,20 @@ static int __init intel_pstate_init(void)
>         if (intel_pstate_msrs_not_valid())
>                 return -ENODEV;
>
> +hwp_cpu_matched:
> +       /*
> +        * The Intel pstate driver will be ignored if the platform
> +        * firmware has its own power management modes.
> +        */
> +       if (intel_pstate_platform_pwr_mgmt_exists())
> +               return -ENODEV;
> +
>         pr_info("Intel P-state driver initializing.\n");
>
>         all_cpu_data = vzalloc(sizeof(void *) * num_possible_cpus());
>         if (!all_cpu_data)
>                 return -ENOMEM;
>
> -       if (static_cpu_has_safe(X86_FEATURE_HWP) && !no_hwp) {
> -               pr_info("intel_pstate: HWP enabled\n");
> -               hwp_active++;
> -       }
> -
>         if (!hwp_active && hwp_only)
>                 goto out;
>
> @@ -1410,6 +1417,9 @@ static int __init intel_pstate_init(void)
>         intel_pstate_debug_expose_params();
>         intel_pstate_sysfs_expose_params();
>
> +       if (hwp_active)
> +               pr_info("intel_pstate: HWP enabled\n");
> +
>         return rc;
>  out:
>         get_online_cpus();
> --
> 2.12.0
>
>
> --
> kernel-team mailing list
> kernel-team@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team

Acked-By: Robert Hooker <robert.hooker@canonical.com>
Colin Ian King March 23, 2017, 6 p.m. UTC | #3
On 23/03/17 17:57, Robert Hooker wrote:
> On Thu, Mar 23, 2017 at 1:33 AM, Kai-Heng Feng
> <kai.heng.feng@canonical.com> wrote:
>> From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
>>
>> BugLink: https://bugs.launchpad.net/bugs/1674390
>>
>> If the processor supports HWP, enable it by default without checking
>> for the cpu model. This will allow to enable HWP in all supported
>> processors without driver change.
>>
>> Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
>> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
>> (cherry picked from commit 7791e4aa59ad724e0b4c8b4dea547a5735108972)
>> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
>> ---
>>  drivers/cpufreq/intel_pstate.c | 34 ++++++++++++++++++++++------------
>>  1 file changed, 22 insertions(+), 12 deletions(-)
>>
>> diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
>> index 7ff8b15a3422..88728d997088 100644
>> --- a/drivers/cpufreq/intel_pstate.c
>> +++ b/drivers/cpufreq/intel_pstate.c
>> @@ -1361,6 +1361,11 @@ static inline bool intel_pstate_platform_pwr_mgmt_exists(void) { return false; }
>>  static inline bool intel_pstate_has_acpi_ppc(void) { return false; }
>>  #endif /* CONFIG_ACPI */
>>
>> +static const struct x86_cpu_id hwp_support_ids[] __initconst = {
>> +       { X86_VENDOR_INTEL, 6, X86_MODEL_ANY, X86_FEATURE_HWP },
>> +       {}
>> +};
>> +
>>  static int __init intel_pstate_init(void)
>>  {
>>         int cpu, rc = 0;
>> @@ -1370,17 +1375,16 @@ static int __init intel_pstate_init(void)
>>         if (no_load)
>>                 return -ENODEV;
>>
>> +       if (x86_match_cpu(hwp_support_ids) && !no_hwp) {
>> +               copy_cpu_funcs(&core_params.funcs);
>> +               hwp_active++;
>> +               goto hwp_cpu_matched;
>> +       }
>> +
>>         id = x86_match_cpu(intel_pstate_cpu_ids);
>>         if (!id)
>>                 return -ENODEV;
>>
>> -       /*
>> -        * The Intel pstate driver will be ignored if the platform
>> -        * firmware has its own power management modes.
>> -        */
>> -       if (intel_pstate_platform_pwr_mgmt_exists())
>> -               return -ENODEV;
>> -
>>         cpu_def = (struct cpu_defaults *)id->driver_data;
>>
>>         copy_pid_params(&cpu_def->pid_policy);
>> @@ -1389,17 +1393,20 @@ static int __init intel_pstate_init(void)
>>         if (intel_pstate_msrs_not_valid())
>>                 return -ENODEV;
>>
>> +hwp_cpu_matched:
>> +       /*
>> +        * The Intel pstate driver will be ignored if the platform
>> +        * firmware has its own power management modes.
>> +        */
>> +       if (intel_pstate_platform_pwr_mgmt_exists())
>> +               return -ENODEV;
>> +
>>         pr_info("Intel P-state driver initializing.\n");
>>
>>         all_cpu_data = vzalloc(sizeof(void *) * num_possible_cpus());
>>         if (!all_cpu_data)
>>                 return -ENOMEM;
>>
>> -       if (static_cpu_has_safe(X86_FEATURE_HWP) && !no_hwp) {
>> -               pr_info("intel_pstate: HWP enabled\n");
>> -               hwp_active++;
>> -       }
>> -
>>         if (!hwp_active && hwp_only)
>>                 goto out;
>>
>> @@ -1410,6 +1417,9 @@ static int __init intel_pstate_init(void)
>>         intel_pstate_debug_expose_params();
>>         intel_pstate_sysfs_expose_params();
>>
>> +       if (hwp_active)
>> +               pr_info("intel_pstate: HWP enabled\n");
>> +
>>         return rc;
>>  out:
>>         get_online_cpus();
>> --
>> 2.12.0
>>
>>
>> --
>> kernel-team mailing list
>> kernel-team@lists.ubuntu.com
>> https://lists.ubuntu.com/mailman/listinfo/kernel-team
> 
> Acked-By: Robert Hooker <robert.hooker@canonical.com>
> 
Acked-by: Colin Ian King <colin.king@canonical.com>
Stefan Bader March 27, 2017, 2:30 p.m. UTC | #4
The previous two replies were ACKs though hard(er) to see when hidden only
inside the body ;)

-Stefan
diff mbox

Patch

diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 7ff8b15a3422..88728d997088 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -1361,6 +1361,11 @@  static inline bool intel_pstate_platform_pwr_mgmt_exists(void) { return false; }
 static inline bool intel_pstate_has_acpi_ppc(void) { return false; }
 #endif /* CONFIG_ACPI */
 
+static const struct x86_cpu_id hwp_support_ids[] __initconst = {
+	{ X86_VENDOR_INTEL, 6, X86_MODEL_ANY, X86_FEATURE_HWP },
+	{}
+};
+
 static int __init intel_pstate_init(void)
 {
 	int cpu, rc = 0;
@@ -1370,17 +1375,16 @@  static int __init intel_pstate_init(void)
 	if (no_load)
 		return -ENODEV;
 
+	if (x86_match_cpu(hwp_support_ids) && !no_hwp) {
+		copy_cpu_funcs(&core_params.funcs);
+		hwp_active++;
+		goto hwp_cpu_matched;
+	}
+
 	id = x86_match_cpu(intel_pstate_cpu_ids);
 	if (!id)
 		return -ENODEV;
 
-	/*
-	 * The Intel pstate driver will be ignored if the platform
-	 * firmware has its own power management modes.
-	 */
-	if (intel_pstate_platform_pwr_mgmt_exists())
-		return -ENODEV;
-
 	cpu_def = (struct cpu_defaults *)id->driver_data;
 
 	copy_pid_params(&cpu_def->pid_policy);
@@ -1389,17 +1393,20 @@  static int __init intel_pstate_init(void)
 	if (intel_pstate_msrs_not_valid())
 		return -ENODEV;
 
+hwp_cpu_matched:
+	/*
+	 * The Intel pstate driver will be ignored if the platform
+	 * firmware has its own power management modes.
+	 */
+	if (intel_pstate_platform_pwr_mgmt_exists())
+		return -ENODEV;
+
 	pr_info("Intel P-state driver initializing.\n");
 
 	all_cpu_data = vzalloc(sizeof(void *) * num_possible_cpus());
 	if (!all_cpu_data)
 		return -ENOMEM;
 
-	if (static_cpu_has_safe(X86_FEATURE_HWP) && !no_hwp) {
-		pr_info("intel_pstate: HWP enabled\n");
-		hwp_active++;
-	}
-
 	if (!hwp_active && hwp_only)
 		goto out;
 
@@ -1410,6 +1417,9 @@  static int __init intel_pstate_init(void)
 	intel_pstate_debug_expose_params();
 	intel_pstate_sysfs_expose_params();
 
+	if (hwp_active)
+		pr_info("intel_pstate: HWP enabled\n");
+
 	return rc;
 out:
 	get_online_cpus();