Re: [PATCH v1] cpufreq: intel_pstate: Avoid using DESIRED_PERF when DEC is enabled

srinivas pandruvada <[email protected]>
Newsgroups org.kernel.vger.linux-pm,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On Mon, 2026-08-03 at 20:15 +0200, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <[email protected]>
> 
> In principle, the desired performance level can be set in
> MSR_HWP_REQUEST
> to indicate to the processor what performance level the OS would like
> the given CPU to run at, but if the Dynamic Efficiency Control (DEC)
> feature is enabled in the processor, doing so may result in confusing
> the processor firmware.  It is then better to let the processor
> firmware
> figure out the most suitable performance level by itself.
> 
> Accordingly, make intel_pstate always set the desired performance
> level
> to zero (which means "no preference") when running on a platform with
> DEC enabled.
> 
> Signed-off-by: Rafael J. Wysocki <[email protected]>

Acked-by: Srinivas Pandruvada <[email protected]>

> ---
> 
> Applies on top of linux-next.
> 
> ---
>  drivers/cpufreq/intel_pstate.c |    9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> --- a/drivers/cpufreq/intel_pstate.c
> +++ b/drivers/cpufreq/intel_pstate.c
> @@ -303,6 +303,7 @@ static bool per_cpu_limits __ro_after_in
>  static bool hwp_forced __ro_after_init;
>  static bool hwp_boost __read_mostly;
>  static bool hwp_is_hybrid;
> +static u32 hwp_desired_mask __read_mostly = ~0U;
>  
>  static struct cpufreq_driver *intel_pstate_driver __read_mostly;
>  
> @@ -3150,7 +3151,7 @@ static void intel_cpufreq_hwp_update(str
>  	value |= HWP_MAX_PERF(max);
>  
>  	value &= ~HWP_DESIRED_PERF(~0L);
> -	value |= HWP_DESIRED_PERF(desired);
> +	value |= HWP_DESIRED_PERF(desired & hwp_desired_mask);
>  
>  	if (value == prev)
>  		return;
> @@ -3787,6 +3788,7 @@ static int __init intel_pstate_init(void
>  	id = x86_match_cpu(hwp_support_ids);
>  	if (id) {
>  		bool epp_present = hwp_check_epp();
> +		bool dec_present = hwp_check_dec();
>  
>  		/*
>  		 * If HWP is enabled already, there is no choice but
> to deal
> @@ -3798,7 +3800,7 @@ static int __init intel_pstate_init(void
>  			no_hwp = 0;
>  		} else if (no_load) {
>  			return -ENODEV;
> -		} else if (!epp_present && !hwp_check_dec()) {
> +		} else if (!epp_present && !dec_present) {
>  			/*
>  			 * Avoid enabling HWP for processors without
> EPP support
>  			 * unless the Dynamic Efficiency Control
> (DEC) enable
> @@ -3820,6 +3822,9 @@ static int __init intel_pstate_init(void
>  			if (!default_driver)
>  				default_driver = &intel_pstate;
>  
> +			if (dec_present)
> +				hwp_desired_mask = 0;
> +
>  			if (!id->driver_data)
>  				pstate_funcs.get_cpu_scaling =
> hwp_get_cpu_scaling;
>  
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.