Re: current->sched_class->yield_task is NULL, any hint?

From: Peter Zijlstra
Date: Wed Apr 09 2014 - 15:35:04 EST


On Wed, Apr 09, 2014 at 11:49:17AM -0700, Lin Ming wrote:
> On Wed, Apr 9, 2014 at 11:32 AM, Lin Ming <minggr@xxxxxxxxx> wrote:
> > On Wed, Apr 9, 2014 at 11:25 AM, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> >> On Wed, Apr 09, 2014 at 10:43:32AM -0700, Lin Ming wrote:
> >>> Hi Peter,
> >>>
> >>> I hit a panic in sys_sched_yield() because(for some unknown reason)
> >>> current->sched_class->yield_task is NULL.
> >>> It's an ARM embedded board with 3.4-rt kernel.
> >>>
> >>> Could you share any hint for the possible causes?
> >>
> >> What class does current->sched_class point to?
> >
> > [12890.088232] Process swapper/0 (pid: 0, stack limit = 0xc07042f0)
> >
> > It's idle task. I think it should be idle_sched_class.
> > But let me double check it.
>
> idle_sched_class has no "yield_task" defined.
> Does it mean that idle task should not call yield() at all?

Indeed. The idle task should never call yield. In fact, it should only
ever run the idle loop code, and that had better bloody not include a
yield call.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/