On Thu, Sep 06, 2012 at 12:03:50AM +0200, Peter Zijlstra wrote: > On Wed, 2012-09-05 at 19:01 +0200, Peter Zijlstra wrote: > > > Please do a delta. > > OK, so I suppose something like the below ought to do. Paul its slightly > different than the one in your tree, given the changelog below, do you > see anything wrong with it? > > Rakib, again, sorry for getting your name wrong, and this time for > getting it merged :/ > > --- > Subject: sched: Fix load avg vs cpu-hotplug mk-II > > Commit f319da0c68 ("sched: Fix load avg vs cpu-hotplug") was a known > broken version that got in by accident. > > In particular, the problem is that at the point it calls > calc_load_migrate() nr_running := 1 (the stopper thread), so move the > call to CPU_DEAD where we're sure that nr_running := 0. > > Also note that we can call calc_load_migrate() without serialization, we > know the state of rq is stable since its cpu is dead, and we modify the > global state using appropriate atomic ops. > > Suggested-by: Paul E. McKenney <paul...@linux.vnet.ibm.com> > Signed-off-by: Peter Zijlstra <a.p.zijls...@chello.nl>
Given your point about atomic ops, my version was indeed overkill. Reviewed-by: Paul E. McKenney <paul...@linux.vnet.ibm.com> > --- > kernel/sched/core.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > index c46a011..8c089cb 100644 > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -5086,7 +5086,9 @@ migration_call(struct notifier_block *nfb, unsigned > long action, void *hcpu) > migrate_tasks(cpu); > BUG_ON(rq->nr_running != 1); /* the migration thread */ > raw_spin_unlock_irqrestore(&rq->lock, flags); > + break; > > + case CPU_DEAD: > calc_load_migrate(rq); > break; > #endif > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/