Message ID | 20170323053335.27132-2-kai.heng.feng@canonical.com |
---|---|
State | New |
Headers | show |
Positive test results
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>
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>
The previous two replies were ACKs though hard(er) to see when hidden only inside the body ;) -Stefan
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();