aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc')
-rw-r--r--arch/sparc/kernel/smp_64.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c
index e142545244f2..b66a5338231e 100644
--- a/arch/sparc/kernel/smp_64.c
+++ b/arch/sparc/kernel/smp_64.c
@@ -1399,8 +1399,13 @@ void __init smp_cpus_done(unsigned int max_cpus)
1399 1399
1400void smp_send_reschedule(int cpu) 1400void smp_send_reschedule(int cpu)
1401{ 1401{
1402 xcall_deliver((u64) &xcall_receive_signal, 0, 0, 1402 if (cpu == smp_processor_id()) {
1403 cpumask_of(cpu)); 1403 WARN_ON_ONCE(preemptible());
1404 set_softint(1 << PIL_SMP_RECEIVE_SIGNAL);
1405 } else {
1406 xcall_deliver((u64) &xcall_receive_signal,
1407 0, 0, cpumask_of(cpu));
1408 }
1404} 1409}
1405 1410
1406void __irq_entry smp_receive_signal_client(int irq, struct pt_regs *regs) 1411void __irq_entry smp_receive_signal_client(int irq, struct pt_regs *regs)