If the intel_pstate driver is set to passive mode, then writing the
same value to the energy_performance_preference sysfs twice will fail.
This is caused by the wrong return value used (index of the matched
energy_perf_string), instead of the length of the passed in parameter.
Fix by forcing the internal return value to zero when the same
preference is passed in by user. This same issue is not present when
active mode is used for the driver.
Fixes: f6ebbcf08f37 ("cpufreq: intel_pstate: Implement passive mode with HWP enabled")
Reported-by: Niklas Neronin <[email protected]>
Signed-off-by: Tero Kristo <[email protected]>
---
drivers/cpufreq/intel_pstate.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 2548ec92faa2..f29182512b98 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -824,6 +824,8 @@ static ssize_t store_energy_performance_preference(
err = cpufreq_start_governor(policy);
if (!ret)
ret = err;
+ } else {
+ ret = 0;
}
}
--
2.25.1
On Wed, Jun 21, 2023 at 8:59 AM Tero Kristo <[email protected]> wrote:
>
> If the intel_pstate driver is set to passive mode, then writing the
> same value to the energy_performance_preference sysfs twice will fail.
> This is caused by the wrong return value used (index of the matched
> energy_perf_string), instead of the length of the passed in parameter.
> Fix by forcing the internal return value to zero when the same
> preference is passed in by user. This same issue is not present when
> active mode is used for the driver.
>
> Fixes: f6ebbcf08f37 ("cpufreq: intel_pstate: Implement passive mode with HWP enabled")
> Reported-by: Niklas Neronin <[email protected]>
> Signed-off-by: Tero Kristo <[email protected]>
> ---
> drivers/cpufreq/intel_pstate.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
> index 2548ec92faa2..f29182512b98 100644
> --- a/drivers/cpufreq/intel_pstate.c
> +++ b/drivers/cpufreq/intel_pstate.c
> @@ -824,6 +824,8 @@ static ssize_t store_energy_performance_preference(
> err = cpufreq_start_governor(policy);
> if (!ret)
> ret = err;
> + } else {
> + ret = 0;
> }
> }
>
> --
Applied as 6.5 material, thanks!