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; > > >