x86: change flush_tlb_others to take a const struct cpumask
authorRusty Russell <[email protected]>
Sun, 11 Jan 2009 05:58:09 +0000 (21:58 -0800)
committerIngo Molnar <[email protected]>
Sun, 11 Jan 2009 18:13:06 +0000 (19:13 +0100)
commit4595f9620cda8a1e973588e743cf5f8436dd20c6
tree98a47cff17f58262979c7d04590cb3ffc0deead9
parent802bf931f2688ad125b73db597ce63cc842fb27a
x86: change flush_tlb_others to take a const struct cpumask

Impact: reduce stack usage, use new cpumask API.

This is made a little more tricky by uv_flush_tlb_others which
actually alters its argument, for an IPI to be sent to the remaining
cpus in the mask.

I solve this by allocating a cpumask_var_t for this case and falling back
to IPI should this fail.

To eliminate temporaries in the caller, all flush_tlb_others implementations
now do the this-cpu-elimination step themselves.

Note also the curious "cpus_or(f->flush_cpumask, cpumask, f->flush_cpumask)"
which has been there since pre-git and yet f->flush_cpumask is always zero
at this point.

Signed-off-by: Rusty Russell <[email protected]>
Signed-off-by: Mike Travis <[email protected]>
arch/x86/include/asm/paravirt.h
arch/x86/include/asm/tlbflush.h
arch/x86/include/asm/uv/uv_bau.h
arch/x86/kernel/tlb_32.c
arch/x86/kernel/tlb_64.c
arch/x86/kernel/tlb_uv.c
arch/x86/xen/enlighten.c