On Fri, Dec 7, 2018 at 11:28 AM Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> wrote: > From: Frank Rowand <frank.rowand@xxxxxxxxxxx> > > The arm boot_lock is used by the secondary processor startup code. The locking > task is the idle thread, which has idle->sched_class == &idle_sched_class. > idle_sched_class->enqueue_task == NULL, so if the idle task blocks on the > lock, the attempt to wake it when the lock becomes available will fail: > > try_to_wake_up() > ... > activate_task() > enqueue_task() > p->sched_class->enqueue_task(rq, p, flags) > > Fix by converting boot_lock to a raw spin lock. This makes perfect sense. Reviewed-by: Linus Walleij <linus.walleij@xxxxxxxxxx> Yours, Linus Walleij