mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [RFC PATCH] kernel/cpu: restart cpu_up when hotplug is disabled
@ 2022-04-18 19:54 Joel Savitz
  2022-04-19 12:34 ` David Hildenbrand
  0 siblings, 1 reply; 5+ messages in thread
From: Joel Savitz @ 2022-04-18 19:54 UTC (permalink / raw)
  To: linux-kernel
  Cc: Joel Savitz, Thomas Gleixner, Valentin Schneider, Peter Zijlstra,
	Frederic Weisbecker, Mark Rutland, Yuan ZhaoXiong, Baokun Li,
	Jason A. Donenfeld, YueHaibing, Randy Dunlap, David Hildenbrand

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


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-04-21 14:34 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-18 19:54 [RFC PATCH] kernel/cpu: restart cpu_up when hotplug is disabled Joel Savitz
2022-04-19 12:34 ` David Hildenbrand
2022-04-21 14:23   ` Thomas Gleixner
2022-04-21 14:31     ` David Hildenbrand
2022-04-21 14:34       ` David Hildenbrand

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®