I am having an issue where the kernel_init task started by rest_init() never get scheduled again after calling workqueue_init(). Any reason what could cause such an issue during boot ? If it may help, below is the backtrace when it gets preempted: #0 __switch_to (prev=0x3828000, next=0x38283a0) at /linux/arch/_/kernel/process.c:142 #1 0x003663f0 in context_switch (rf=<optimized out>, next=<optimized out>, prev=<optimized out>, rq=<optimized out>) at /linux/kernel/sched/core.c:2818 #2 __schedule (preempt=<optimized out>) at /linux/kernel/sched/core.c:3445 #3 0x003667f6 in schedule () at /linux/kernel/sched/core.c:3509 #4 0x0036b70a in schedule_timeout (timeout=<optimized out>) at /linux/kernel/time/timer.c:1783 #5 0x00367a5e in do_wait_for_common (state=<optimized out>, timeout=2147483647, action=<optimized out>, x=<optimized out>) at /linux/kernel/sched/completion.c:83 #6 __wait_for_common (state=<optimized out>, timeout=<optimized out>, action=<optimized out>, x=<optimized out>) at /linux/kernel/sched/completion.c:104 #7 wait_for_common (x=<optimized out>, timeout=<optimized out>, state=<optimized out>) at /linux/kernel/sched/completion.c:115 #8 0x00367e10 in wait_for_completion_killable (x=<optimized out>) at /linux/kernel/sched/completion.c:241 #9 0x0005bec0 in __kthread_create_on_node (threadfn=<optimized out>, data=<optimized out>, node=<optimized out>, namefmt=<optimized out>, args=<optimized out>) at /linux/kernel/kthread.c:320 #10 0x0005cdb8 in kthread_create_on_node (threadfn=<optimized out>, data=<optimized out>, node=<optimized out>, namefmt=<optimized out>) at /linux/kernel/kthread.c:388 #11 0x00050ab2 in create_worker (pool=<optimized out>) at /linux/kernel/workqueue.c:1929 #12 0x0000621c in workqueue_init () at /linux/kernel/workqueue.c:5977 #13 0x000023a8 in kernel_init_freeable () at /linux/init/main.c:1155 #14 0x003659ee in kernel_init (unused=<optimized out>) at /linux/init/main.c:1087