summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2022-10-13 14:50:28 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-10-26 13:19:42 +0200
commit012e3679b8e10ff3aa3bc1eb71f1d9e7cfa2dff6 (patch)
tree2d2b2a75a6a88f372654d5ceb6a374a26de3ef0f
parent75a578000ae5e511e5d0e8433c94a14d9c99c412 (diff)
downloadlinux-stable-012e3679b8e10ff3aa3bc1eb71f1d9e7cfa2dff6.tar.gz
linux-stable-012e3679b8e10ff3aa3bc1eb71f1d9e7cfa2dff6.tar.bz2
linux-stable-012e3679b8e10ff3aa3bc1eb71f1d9e7cfa2dff6.zip
thermal: intel_powerclamp: Use first online CPU as control_cpu
commit 4bb7f6c2781e46fc5bd00475a66df2ea30ef330d upstream. Commit 68b99e94a4a2 ("thermal: intel_powerclamp: Use get_cpu() instead of smp_processor_id() to avoid crash") fixed an issue related to using smp_processor_id() in preemptible context by replacing it with a pair of get_cpu()/put_cpu(), but what is needed there really is any online CPU and not necessarily the one currently running the code. Arguably, getting the one that's running the code in there is confusing. For this reason, simply give the control CPU role to the first online one which automatically will be CPU0 if it is online, so one check can be dropped from the code for an added benefit. Link: https://lore.kernel.org/linux-pm/20221011113646.GA12080@duo.ucw.cz/ Fixes: 68b99e94a4a2 ("thermal: intel_powerclamp: Use get_cpu() instead of smp_processor_id() to avoid crash") Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-by: Chen Yu <yu.c.chen@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/thermal/intel_powerclamp.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/drivers/thermal/intel_powerclamp.c b/drivers/thermal/intel_powerclamp.c
index 079c8c1a5f15..dffefcde0628 100644
--- a/drivers/thermal/intel_powerclamp.c
+++ b/drivers/thermal/intel_powerclamp.c
@@ -549,11 +549,7 @@ static int start_power_clamp(void)
get_online_cpus();
/* prefer BSP */
- control_cpu = 0;
- if (!cpu_online(control_cpu)) {
- control_cpu = get_cpu();
- put_cpu();
- }
+ control_cpu = cpumask_first(cpu_online_mask);
clamping = true;
schedule_delayed_work(&poll_pkg_cstate_work, 0);