* Daniel Walker <[EMAIL PROTECTED]> wrote: > It looks like sched_class->enqueue_task() is NULL and that's why the > system hangs .. > > The reason why that happens is because check_pgt_cache() is called > from the idle thread, and with PREEMPT_RT check_pgt_cache() locks at > least one mutex .. Once the idle thread is on a wait_list, as soon as > it's woke by the mutex owner the system will crash in enqueue_task. > Since the idle thread has a NULL sched_class->enqueue_task .. > > check_pgt_cache() is already getting called from the desched_thread() > , so I think it could just be removed from i386 cpu_idle(). > > Anyone have comments on the theory above?
yeah, that call definitely looks wrong in cpu_idle(). Most of the other check_pgd_cache() calls introduced by commit f1d1a842 look wrong too in an -rt context. Fix is below. Ingo Index: linux-rt.q/arch/i386/kernel/process.c =================================================================== --- linux-rt.q.orig/arch/i386/kernel/process.c +++ linux-rt.q/arch/i386/kernel/process.c @@ -189,7 +189,6 @@ void cpu_idle(void) tick_nohz_stop_sched_tick(); - check_pgt_cache(); rmb(); idle = pm_idle; - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/