smp: quit unconditionally enabling irq in on_each_cpu_mask and on_each_cpu_cond
authorDavid Daney <david.daney@cavium.com>
Wed, 11 Sep 2013 21:23:24 +0000 (14:23 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 11 Sep 2013 22:58:23 +0000 (15:58 -0700)
commitfa688207c9db48b64ab6538abc3fcdf26110b9ec
tree47fff6ebaa5b0b7d3feca64010051899e29db475
parentc14c338cb05c700a260480c197cfd6da8f8b7d2e
smp: quit unconditionally enabling irq in on_each_cpu_mask and on_each_cpu_cond

As in commit f21afc25f9ed ("smp.h: Use local_irq_{save,restore}() in
!SMP version of on_each_cpu()"), we don't want to enable irqs if they
are not already enabled.  There are currently no known problematical
callers of these functions, but since it is a known failure pattern, we
preemptively fix them.

Since they are not trivial functions, make them non-inline by moving
them to up.c.  This also makes it so we don't have to fix #include
dependancies for preempt_{disable,enable}.

Signed-off-by: David Daney <david.daney@cavium.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/linux/smp.h
kernel/up.c