Messages in this thread | | | Subject | Re: specjbb2005 and aim7 regression with 2.6.32-rc kernels | From | Mike Galbraith <> | Date | Mon, 09 Nov 2009 10:57:17 +0100 |
| |
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
| |