cpufreq: intel_pstate: Add and use hybrid_get_cpu_type()

Introduce a function for identifying the type of a given CPU in a
hybrid system, called hybrid_get_cpu_type(), and use if for hybrid
scaling factor determination in hwp_get_cpu_scaling().

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Link: https://patch.msgid.link/1954386.tdWV9SEqCh@rafael.j.wysocki
This commit is contained in:
Rafael J. Wysocki
2025-10-15 15:46:40 +02:00
parent 6db0f533d3
commit 528dde6619

View File

@@ -912,6 +912,11 @@ static struct freq_attr *hwp_cpufreq_attrs[] = {
[HWP_CPUFREQ_ATTR_COUNT] = NULL,
};
static u8 hybrid_get_cpu_type(unsigned int cpu)
{
return cpu_data(cpu).topo.intel_type;
}
static bool no_cas __ro_after_init;
static struct cpudata *hybrid_max_perf_cpu __read_mostly;
@@ -2298,18 +2303,14 @@ static int knl_get_turbo_pstate(int cpu)
static int hwp_get_cpu_scaling(int cpu)
{
if (hybrid_scaling_factor) {
struct cpuinfo_x86 *c = &cpu_data(cpu);
u8 cpu_type = c->topo.intel_type;
/*
* Return the hybrid scaling factor for P-cores and use the
* default core scaling for E-cores.
*/
if (cpu_type == INTEL_CPU_TYPE_CORE)
if (hybrid_get_cpu_type(cpu) == INTEL_CPU_TYPE_CORE)
return hybrid_scaling_factor;
if (cpu_type == INTEL_CPU_TYPE_ATOM)
return core_get_scaling();
return core_get_scaling();
}
/* Use core scaling on non-hybrid systems. */