Messages in this thread | | | Date | Wed, 30 Sep 2015 05:04:21 -0400 | From | Steven Rostedt <> | Subject | Re: [PATCH v2 01/12] sched: Simplify INIT_PREEMPT_COUNT |
| |
On Wed, 30 Sep 2015 09:10:36 +0200 Peter Zijlstra <peterz@infradead.org> wrote:
> As per commit d86ee4809d03 ("sched: optimize cond_resched()") we need > PREEMPT_ACTIVE to avoid cond_resched() from working before the > scheduler is setup. > > However, keeping preemption disabled should do the same thing already, > making the PREEMPT_ACTIVE part entirely redundant. > > The only complication is !PREEMPT_COUNT kernels, where > PREEMPT_DISABLED ends up being 0. Instead we use an unconditional > PREEMPT_OFFSET to set preempt_count() even on !PREEMPT_COUNT kernels. > > Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> > --- > include/linux/sched.h | 11 +++++------ > 1 file changed, 5 insertions(+), 6 deletions(-) > > --- a/include/linux/sched.h > +++ b/include/linux/sched.h > @@ -606,19 +606,18 @@ struct task_cputime_atomic { > #endif > > /* > - * Disable preemption until the scheduler is running. > - * Reset by start_kernel()->sched_init()->init_idle(). > + * Disable preemption until the scheduler is running -- use an unconditional > + * value so that it also works on !PREEMPT_COUNT kernels. > * > - * We include PREEMPT_ACTIVE to avoid cond_resched() from working > - * before the scheduler is active -- see should_resched(). > + * Reset by start_kernel()->sched_init()->init_idle().
Reset by start_kernel()->sched_init()->init_idle()->init_idle_preempt_count().
Other than that.
Reviewed-by: Steven Rostedt <rostedt@goodmis.org>
-- Steve
> */ > -#define INIT_PREEMPT_COUNT (PREEMPT_DISABLED + PREEMPT_ACTIVE) > +#define INIT_PREEMPT_COUNT PREEMPT_OFFSET > > /** > * struct thread_group_cputimer - thread group interval timer counts > * @cputime_atomic: atomic thread group interval timers. > * @running: non-zero when there are timers running and > - * @cputime receives updates. > + * @cputime receives updates. > * > * This structure contains the version of task_cputime, above, that is > * used for thread group CPU timer calculations. >
| |