Re: specjbb2005 and aim7 regression with 2.6.32-rc kernels

From: Mike Galbraith
Date: Mon Nov 09 2009 - 04:57:25 EST


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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/