Re: [PATCH 4/12] arch/mips: remove references to cpu_*_map.
From: Rusty Russell <hidden>
Date: 2012-02-16 01:51:17
Also in:
lkml
On Wed, 15 Feb 2012 14:50:02 +0530, "Srivatsa S. Bhat" [off-list ref] wrote:
quoted
- cpu_clear(smp_processor_id(), mask); - for_each_cpu_mask(cpu, mask) - if (cpu_context(cpu, mm)) + for_each_online_cpu(cpu) { + if (cpu != smp_processor_id() && cpu_context(cpu, mm)) cpu_context(cpu, mm) = 0; + }Strictly speaking, this one is not a mere cleanup. It causes a subtle change in behaviour: earlier, it used to iterate over a local copy of cpu_online_mask, which wouldn't change. However, with this patch, it will iterate directly over cpu_online_mask, which can change underneath. (The preempt_disable() won't stop new CPUs from coming in.. it only prevents CPUs from going offline, that too provided that we use stop_machine stuff for CPU offline, which we do currently.)
There's a preempt_disable() around this whole function, so online_mask can't change. Same with the others.
quoted
+ mask = *cpu_online_mask; + cpumask_clear(&mask, cpu);This should be cpumask_clear_cpu(cpu, &mask);
Good catch. I copied the bitmask ops, and continually regret it. I've rolled all these together with your fixes, added your ia64 patch, and am rebasing to -next now, so I can hand this all across to akpm. Thanks, Rusty.