]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
cpufreq: intel_pstate: Use correct scaling factor on Raptor Lake-E
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 12 May 2026 19:20:30 +0000 (21:20 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 13 May 2026 19:42:07 +0000 (21:42 +0200)
Raptor Lake-E has the same processor ID as Raptor Lake-S, so there is
an entry in intel_hybrid_scaling_factor[] for it.  It does not contain
E-cores though and hybrid_get_cpu_type() returns 0 for its P-cores, so
they get the default "core" scaling factor.  However, the original
Raptor Lake scaling factor for P-cores still needs to be used for
mapping the HWP performance levels of the P-cores in Raptor Lake-E to
frequency, as though they were part of a real hybrid system.

To address this, update hwp_get_cpu_scaling() to return
hybrid_scaling_factor, which is the P-core scaling factor
retrieved from intel_hybrid_scaling_factor[], for all CPUs
that are not enumerated as E-cores.

Fixes: 9b18d536b124 ("cpufreq: intel_pstate: Use CPPC to get scaling factors")
Link: https://lore.kernel.org/all/20260511235328.2018458-1-srinivas.pandruvada@linux.intel.com/
Reported-by: Henry Tseng <henrytseng@qnap.com>
Closes: https://lore.kernel.org/linux-pm/20260508063032.3248602-1-henrytseng@qnap.com/
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Cc: All applicable <stable@vger.kernel.org>
Link: https://patch.msgid.link/4523296.ejJDZkT8p0@rafael.j.wysocki
drivers/cpufreq/intel_pstate.c

index 1292da53e5fcb196e892e0221f88eb8c8be83d3b..978e2b604ac86df7eefb9184d67c404d9d621086 100644 (file)
@@ -2279,7 +2279,7 @@ static int hwp_get_cpu_scaling(int cpu)
                 * Return the hybrid scaling factor for P-cores and use the
                 * default core scaling for E-cores.
                 */
-               if (hybrid_get_cpu_type(cpu) == INTEL_CPU_TYPE_CORE)
+               if (hybrid_get_cpu_type(cpu) != INTEL_CPU_TYPE_ATOM)
                        return hybrid_scaling_factor;
 
                return core_get_scaling();