Re: [PATCH v2] sched: Have do_idle() call __schedule() without enabling preemption

From: Peter Zijlstra
Date: Thu Apr 13 2017 - 10:38:25 EST


On Thu, Apr 13, 2017 at 09:48:40AM -0400, Steven Rostedt wrote:
> On Thu, 13 Apr 2017 10:44:53 +0200
> Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
>
> > On Wed, Apr 12, 2017 at 02:27:44PM -0400, Steven Rostedt wrote:
> > > + * schedule_idle() is similar to schedule_preempt_disable() except
> > > + * that it never enables preemption.
> >
> > That's not right. The primary distinction is that it doesn't call
> > sched_submit_work().
>
> That has nothing to do with fixing synchronize_rcu_tasks(), which is
> the entire point of my patch, thus it is *not* the primary distinction.

It is. The only reason you _can_ avoid that preemption window is by not
doing sched_submit_work().

The moment you need to call that, the preemption window comes back.