On Wed, Jul 05, 2017 at 11:07:34AM +0200, Thomas Gleixner wrote: > On Wed, 5 Jul 2017, Peter Zijlstra wrote:
> > OK, so if I get this right we do something like: > > > > > > BP AP > > > > bringup_cpu(); > > __cpu_up() ------------> /* stuff */ > > bringup_wait_for_ap() > > wait_for_completion(); > > cpuhp_online_idle(); > > <------------ complete(&st->done); > > unpark() > > while(1) > > do_idle(); > > actually I added after unpark(): > > kick_ap() > wait_for_completion() > > So the AP will execute the online callbacks in its own hotplug thread. Indeed, but I stopped after the unpark() bits bcause well, that's what you changed here :-)