From: Thomas Gleixner Date: Wed, 13 Jul 2016 17:16:03 +0000 (+0000) Subject: cpu/hotplug: Handle early registration gracefully X-Git-Tag: v4.8-rc1~99^2~69 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=6a4e24518c8a10f78f44da219835239cb5aca90d;p=karo-tx-linux.git cpu/hotplug: Handle early registration gracefully We switched the hotplug machinery to smpboot threads. Early registration of hotplug callbacks, i.e. from do_pre_smp_initcalls(), happens before the threads are initialized. Instead of moving the thread init, we simply handle it in the hotplug code itself and invoke the function directly. Signed-off-by: Thomas Gleixner Signed-off-by: Anna-Maria Gleixner Cc: Linus Torvalds Cc: Peter Zijlstra Cc: rt@linutronix.de Link: http://lkml.kernel.org/r/20160713153332.896450738@linutronix.de Signed-off-by: Ingo Molnar --- diff --git a/kernel/cpu.c b/kernel/cpu.c index 7b61887f7ccd..fe71ce4e60f1 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -517,6 +517,13 @@ static int cpuhp_invoke_ap_callback(int cpu, enum cpuhp_state state, if (!cpu_online(cpu)) return 0; + /* + * If we are up and running, use the hotplug thread. For early calls + * we invoke the thread function directly. + */ + if (!st->thread) + return cpuhp_invoke_callback(cpu, state, cb); + st->cb_state = state; st->cb = cb; /*