]> www.infradead.org Git - nvme.git/commitdiff
cpufreq: intel_pstate: Fix hwp_get_cpu_scaling()
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 14 Apr 2025 15:33:25 +0000 (17:33 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 14 Apr 2025 15:33:25 +0000 (17:33 +0200)
Commit b52aaeeadfac ("cpufreq: intel_pstate: Avoid SMP calls to get
cpu-type") introduced two issues into hwp_get_cpu_scaling().  First,
it made that function use the CPU type of the CPU running the code
even though the target CPU is passed as the argument to it and second,
it used smp_processor_id() for that even though hwp_get_cpu_scaling()
runs in preemptible context.

Fix both of these problems by simply passing "cpu" to cpu_data().

Fixes: b52aaeeadfac ("cpufreq: intel_pstate: Avoid SMP calls to get cpu-type")
Link: https://lore.kernel.org/linux-pm/20250412103434.5321-1-xry111@xry111.site/
Reported-by: Xi Ruoyao <xry111@xry111.site>
Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Link: https://patch.msgid.link/12659608.O9o76ZdvQC@rjwysocki.net
drivers/cpufreq/intel_pstate.c

index 4aad79d26c64f59f45e5aeb7c8bdc25094c6a07b..f41ed0b9e6101578d719b86c3283e5e86d8836e7 100644 (file)
@@ -2209,7 +2209,7 @@ 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(smp_processor_id());
+               struct cpuinfo_x86 *c = &cpu_data(cpu);
                u8 cpu_type = c->topo.intel_type;
 
                /*