From 6a8c94446e8e588e3a7b925db8cd0acb58cd2a88 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 24 Oct 2022 10:40:38 +0200 Subject: [PATCH] 4.9-stable patches added patches: thermal-intel_powerclamp-use-first-online-cpu-as-control_cpu.patch --- queue-4.9/series | 1 + ...-use-first-online-cpu-as-control_cpu.patch | 44 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 queue-4.9/thermal-intel_powerclamp-use-first-online-cpu-as-control_cpu.patch diff --git a/queue-4.9/series b/queue-4.9/series index 37df05bdbc2..a4f33ceaa06 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -155,3 +155,4 @@ net-ieee802154-return-einval-for-unknown-addr-type.patch net-ieee802154-don-t-warn-zero-sized-raw_sendmsg.patch ext4-continue-to-expand-file-system-when-the-target-size-doesn-t-reach.patch inet-fully-convert-sk-sk_rx_dst-to-rcu-rules.patch +thermal-intel_powerclamp-use-first-online-cpu-as-control_cpu.patch diff --git a/queue-4.9/thermal-intel_powerclamp-use-first-online-cpu-as-control_cpu.patch b/queue-4.9/thermal-intel_powerclamp-use-first-online-cpu-as-control_cpu.patch new file mode 100644 index 00000000000..5b75bed7878 --- /dev/null +++ b/queue-4.9/thermal-intel_powerclamp-use-first-online-cpu-as-control_cpu.patch @@ -0,0 +1,44 @@ +From 4bb7f6c2781e46fc5bd00475a66df2ea30ef330d Mon Sep 17 00:00:00 2001 +From: "Rafael J. Wysocki" +Date: Thu, 13 Oct 2022 14:50:28 +0200 +Subject: thermal: intel_powerclamp: Use first online CPU as control_cpu + +From: Rafael J. Wysocki + +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 +Reviewed-by: Chen Yu +Signed-off-by: Greg Kroah-Hartman +--- + drivers/thermal/intel_powerclamp.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +--- a/drivers/thermal/intel_powerclamp.c ++++ b/drivers/thermal/intel_powerclamp.c +@@ -518,11 +518,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); -- 2.47.3