diff mbox

[1/3] cpufreq: intel_pstate: Don't use ACPI perf for HWP

Message ID 1447124291-14059-2-git-send-email-srinivas.pandruvada@linux.intel.com (mailing list archive)
State Accepted, archived
Delegated to: Rafael Wysocki
Headers show

Commit Message

srinivas pandruvada Nov. 10, 2015, 2:58 a.m. UTC
When HWP is enabled, the information in _PSS and _PPC prevents entering
turbo states. The reason is HWP and legacy pstate are not compatible.
There is no processing of turbo activation ratio in HWP, but _PPC setting
still behaves as there is support. So we end up in a pstate, which is
below or equal to max non turbo ratio. Also the max turbo ratio is set to
wrong value in _PSS, so even if HWP is disabled to use acpi-cpufrq or
intel_pstate in legacy mode, this will still cause issue. This change will
not read any _PSS table or call acpi_processor_register_performance,
when the platform has HWP feature.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
---
 drivers/cpufreq/intel_pstate.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

Comments

Rafael J. Wysocki Nov. 14, 2015, 12:44 a.m. UTC | #1
On Monday, November 09, 2015 06:58:09 PM Srinivas Pandruvada wrote:
> When HWP is enabled, the information in _PSS and _PPC prevents entering
> turbo states. The reason is HWP and legacy pstate are not compatible.
> There is no processing of turbo activation ratio in HWP, but _PPC setting
> still behaves as there is support. So we end up in a pstate, which is
> below or equal to max non turbo ratio. Also the max turbo ratio is set to
> wrong value in _PSS, so even if HWP is disabled to use acpi-cpufrq or
> intel_pstate in legacy mode, this will still cause issue. This change will
> not read any _PSS table or call acpi_processor_register_performance,
> when the platform has HWP feature.
> 
> Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
> ---
>  drivers/cpufreq/intel_pstate.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
> index 93a3c63..a0b8180 100644
> --- a/drivers/cpufreq/intel_pstate.c
> +++ b/drivers/cpufreq/intel_pstate.c
> @@ -1557,8 +1557,11 @@ static int __init intel_pstate_init(void)
>  	if (!all_cpu_data)
>  		return -ENOMEM;
>  
> -	if (static_cpu_has_safe(X86_FEATURE_HWP) && !no_hwp)
> -		hwp_active++;
> +	if (static_cpu_has_safe(X86_FEATURE_HWP)) {
> +		if (!no_hwp)
> +			hwp_active++;
> +		no_acpi_perf = 1;
> +	}
>  
>  	if (!hwp_active && hwp_only)
>  		goto out;

Rebased on top of the current Linus' tree and applied.

Thanks,
Rafael

--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 93a3c63..a0b8180 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -1557,8 +1557,11 @@  static int __init intel_pstate_init(void)
 	if (!all_cpu_data)
 		return -ENOMEM;
 
-	if (static_cpu_has_safe(X86_FEATURE_HWP) && !no_hwp)
-		hwp_active++;
+	if (static_cpu_has_safe(X86_FEATURE_HWP)) {
+		if (!no_hwp)
+			hwp_active++;
+		no_acpi_perf = 1;
+	}
 
 	if (!hwp_active && hwp_only)
 		goto out;