cpufreq: intel_pstate: Fix scaling for hybrid-capable systems with disabled E-cores
authorSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Thu, 29 Jun 2023 19:45:09 +0000 (12:45 -0700)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 30 Jun 2023 08:55:43 +0000 (10:55 +0200)
commit0fcfc9e51990246a9813475716746ff5eb98c6aa
treef25d0991b778abef28f8b1f425d4062bd2c89934
parent0b76cc3e9081216918d5e7e907cf9efc7a5fa7db
cpufreq: intel_pstate: Fix scaling for hybrid-capable systems with disabled E-cores

Some system BIOS configuration may provide option to disable E-cores.
As part of this change, CPUID feature for hybrid (Leaf 7 sub leaf 0,
EDX[15] = 0) may not be set. But HWP performance limits will still be
using a scaling factor like any other hybrid enabled system.

The current check for applying scaling factor will fail when hybrid
CPUID feature is not set and the only way to make sure that scaling
should be applied by checking CPPC nominal frequency and nominal
performance.

First, or systems predating Alder Lake, the CPPC nominal frequency and
nominal performance are 0, which can be used to distinguish those
systems from hybrid systems with disabled E-cores.

Second, if the CPPC nominal frequency and nominal performance are
defined, which indicates the need to use a special scaling factor, and
the nominal performance value multiplied by 100 is not equal to the
nominal frequency one, use hybrid scaling factor.

This can be done for all HWP systems without additional CPU model check.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
[ rjw: Subject and changelog edits, removal of unneeded parens, comment
  edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpufreq/intel_pstate.c