lkml.org 
[lkml]   [2022]   [Apr]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[RFC PATCH] kernel/cpu: restart cpu_up when hotplug is disabled
Date
The cpu hotplug path may be utilized while hotplug is disabled for a
brief moment leading to failures. As an example, attempts to perform
cpu hotplug by userspace soon after boot may race with pci_device_probe
leading to inconsistent results.

Proposed idea:
Call restart_syscall instead of returning -EBUSY since
cpu_hotplug_disabled seems to only have a positive value
for short, temporary amounts of time.

Does anyone see any serious problems with this?

Signed-off-by: Joel Savitz <jsavitz@redhat.com>
---
kernel/cpu.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/kernel/cpu.c b/kernel/cpu.c
index 5797c2a7a93f..2992c7d1d24e 100644
--- a/kernel/cpu.c
+++ b/kernel/cpu.c
@@ -35,6 +35,7 @@
#include <linux/percpu-rwsem.h>
#include <linux/cpuset.h>
#include <linux/random.h>
+#include <linux/delay.h>

#include <trace/events/power.h>
#define CREATE_TRACE_POINTS
@@ -1401,7 +1402,9 @@ static int cpu_up(unsigned int cpu, enum cpuhp_state target)
cpu_maps_update_begin();

if (cpu_hotplug_disabled) {
- err = -EBUSY;
+ /* avoid busy looping (5ms of sleep should be enough) */
+ msleep(5);
+ err = restart_syscall();
goto out;
}
if (!cpu_smt_allowed(cpu)) {
--
2.27.0
\
 
 \ /
  Last update: 2022-04-18 21:56    [W:0.034 / U:1.924 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site