On Wed, Apr 11, 2018 at 09:07:30PM +0200, Sebastian Andrzej Siewior wrote: > > This already happens: > - vmstat_shepherd() does get_online_cpus() and within this block it does > queue_delayed_work_on(). So this has to wait until cpuhotplug > completed before it can schedule something and then it won't schedule > anything on the "off" CPU. But can't we have something like this happen: ? CPU0 CPU1 CPU2 ---- ---- ---- get_online_cpus() queue_work(vmstat_update, cpu1) wakeup(kworker/1) High prio task running put_online_cpus() Shutdown CPU 1 migrate kworker/1 schedule kworker/1 (smp_processor_id() != 1) -- Steve