CPU hotplug fix
Linus,
Please pull the latest smp/urgent git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git smp-urgent-2023-09-02
# HEAD: 2b8272ff4a70b866106ae13c36be7ecbef5d5da2 cpu/hotplug: Prevent self deadlock on CPU hot-unplug
Fix a CPU hotplug related deadlock between the task which initiates and controls a CPU hot-unplug operation vs. the CFS bandwidth timer.
Thanks,
Ingo
------------------>
Thomas Gleixner (1):
cpu/hotplug: Prevent self deadlock on CPU hot-unplug
kernel/cpu.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-)
kernel/cpu.c +23 -1
@@ -1487,8 +1487,22 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen,return ret; } +struct cpu_down_work { +unsigned int cpu; +enum cpuhp_state target; +}; + +static long __cpu_down_maps_locked (void *arg) +{ +struct cpu_down_work *work = arg; + +return _cpu_down (work->cpu,0 , work->target); +} +static int cpu_down_maps_locked (unsigned int cpu,enum cpuhp_state target) { +struct cpu_down_work work = { .cpu = cpu, .target = target, }; +/* * If the platform does not support hotplug, report it explicitly to * differentiate it from a transient offlining failure.
@@ -1497,7 +1511,15 @@ static int cpu_down_maps_locked(unsigned int cpu, enum cpuhp_state target)return -EOPNOTSUPP ;if (cpu_hotplug_disabled)return -EBUSY ; -return _cpu_down (cpu,0 , target); + +/* +* Ensure that the control task does not run on the to be offlined +* CPU to prevent a deadlock against cfs_b->period_timer. +*/ + cpu =cpumask_any_but (cpu_online_mask, cpu); +if (cpu >= nr_cpu_ids) +return -EBUSY ; +return work_on_cpu (cpu, __cpu_down_maps_locked, &work); }static int cpu_down (unsigned int cpu,enum cpuhp_state target)
The pull request you sent on Sat, 2 Sep 2023 12:13:42 +0200:
The pull request you sent on Sat, 2 Sep 2023 12:13:42 +0200:
Quoted 1 line
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.gitsmp-urgent-2023-09-02
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/23dfeae882ff45649d2379dde9c63c9476546db5
Thank you!
Signature · 2 lines
Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/prtracker.html