Re: specjbb2005 and aim7 regression with 2.6.32-rc kernels

Mike Galbraith
2009-11-09T09:57:16Z

On Mon, 2009-11-09 at 15:14 +0530, Gautham R Shenoy wrote:
> On Mon, Nov 09, 2009 at 10:15:04AM +0100, Peter Zijlstra wrote:
> > On Mon, 2009-11-09 at 08:09 +0100, Mike Galbraith wrote:
> > > + smp_read_barrier_depends();
> > > cpumask_setall(cpus);
> > > + cpumask_and(cpus, cpus, cpu_online_mask);
> >
> >
> > how about: cpumask_copy(cpus, cpu_online_mask); ?
> >
> > Also, iirc cpu_online_mask is guaranteed stable when preemption is
> > disabled, otherwise you need to use get/put_online_cpus(), an
> > rmb_depends() won't do.
>
> preempt_disable() guarantees that any cpus won't go offline, since we
> use stop_machine() to take CPUs offline. I don't think it provides cover
> against new cpus coming online.

That's exactly the problem I'm having with newidle. Without that
barrier, even with the cpumask_and(), it still balances offline cpus.

-Mike