summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2014-08-11 20:45:01 -0700
committerDavid S. Miller <davem@davemloft.net>2014-08-11 20:45:01 -0700
commit58556104e9cd0107a7a8d2692cf04ef31669f6e4 (patch)
tree4124d9c21f56fced74e2bd1f00631b79c37ca092
parentcaa9199b0efda9fb45f6cf5b5dd5d1be79337d7e (diff)
downloadlinux-stable-58556104e9cd0107a7a8d2692cf04ef31669f6e4.tar.gz
linux-stable-58556104e9cd0107a7a8d2692cf04ef31669f6e4.tar.bz2
linux-stable-58556104e9cd0107a7a8d2692cf04ef31669f6e4.zip
sparc64: Do not disable interrupts in nmi_cpu_busy()
nmi_cpu_busy() is a SMP function call that just makes sure that all of the cpus are spinning using cpu cycles while the NMI test runs. It does not need to disable IRQs because we just care about NMIs executing which will even with 'normal' IRQs disabled. It is not legal to enable hard IRQs in a SMP cross call, in fact this bug triggers the BUG check in irq_work_run_list(): BUG_ON(!irqs_disabled()); Because now irq_work_run() is invoked from the tail of generic_smp_call_function_single_interrupt(). Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--arch/sparc/kernel/nmi.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/arch/sparc/kernel/nmi.c b/arch/sparc/kernel/nmi.c
index 337094556916..5b1151dcba13 100644
--- a/arch/sparc/kernel/nmi.c
+++ b/arch/sparc/kernel/nmi.c
@@ -130,7 +130,6 @@ static inline unsigned int get_nmi_count(int cpu)
static __init void nmi_cpu_busy(void *data)
{
- local_irq_enable_in_hardirq();
while (endflag == 0)
mb();
}