On Wed, Apr 12, 2017 at 08:40:00PM -0400, Steven Rostedt wrote:
> On Wed, 12 Apr 2017 16:48:59 -0700
> "Paul E. McKenney" <paul...@linux.vnet.ibm.com> wrote:
> > 
> > I don't understand why schedule_idle() needs a loop given that
> > schedule_preempt_disabled() doesn't have one, but other than
> 
> But it does:
> 
> void __sched schedule_preempt_disabled(void)
> {
>       sched_preempt_enable_no_resched();
>       schedule();
>       preempt_disable();
> }
> 
> Where we have:
> 
> asmlinkage __visible void __sched schedule(void)
> {
>       struct task_struct *tsk = current;
> 
>       sched_submit_work(tsk);
>       do {
>               preempt_disable();
>               __schedule(false);
>               sched_preempt_enable_no_resched();
>       } while (need_resched());
> }
> 
> Which makes:
> 
> void __sched schedule_preempt_disabled(void)
> {
>       struct task_struct *tsk  = current;
> 
>       scehdule_preempt_enable_no_resched();
>       sched_submit_work(tsk);
>       do {
>               preempt_disable();
>               __schedule(false);
>               schedule_preempt_enable_no_resched();
>       } while (need_resched());
>       preempt_disable();
> }
> 
> My schedule_idle() is simply schedule_preempt_disabled() without the
> change in preemption and no call to sched_submit_work().

Ah, thank you!

> > that, for whatever it is worth, it looks good to me.
> 
> Does this mean I can change the Cc: to Acked-by: ?

Works for me!

Acked-by: Paul E. McKenney <paul...@linux.vnet.ibm.com>

> -- Steve
> 
> 
> > > +void __sched schedule_idle(void)
> > > +{
> > > + do {
> > > +         __schedule(false);
> > > + } while (need_resched());
> > > +}
> > > +
> 

Reply via email to