diff options
-rw-r--r-- | arch/sparc64/kernel/smp.c | 33 |
1 files changed, 10 insertions, 23 deletions
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c index 868625e3b661..47b0738ea4be 100644 --- a/arch/sparc64/kernel/smp.c +++ b/arch/sparc64/kernel/smp.c | |||
@@ -792,16 +792,15 @@ extern unsigned long xcall_call_function; | |||
792 | 792 | ||
793 | void arch_send_call_function_ipi(cpumask_t mask) | 793 | void arch_send_call_function_ipi(cpumask_t mask) |
794 | { | 794 | { |
795 | smp_cross_call_masked(&xcall_call_function, 0, 0, 0, mask); | 795 | xcall_deliver((u64) &xcall_call_function, 0, 0, &mask); |
796 | } | 796 | } |
797 | 797 | ||
798 | extern unsigned long xcall_call_function_single; | 798 | extern unsigned long xcall_call_function_single; |
799 | 799 | ||
800 | void arch_send_call_function_single_ipi(int cpu) | 800 | void arch_send_call_function_single_ipi(int cpu) |
801 | { | 801 | { |
802 | cpumask_t mask = cpumask_of_cpu(cpu); | 802 | xcall_deliver((u64) &xcall_call_function_single, 0, 0, |
803 | 803 | &cpumask_of_cpu(cpu)); | |
804 | smp_cross_call_masked(&xcall_call_function_single, 0, 0, 0, mask); | ||
805 | } | 804 | } |
806 | 805 | ||
807 | /* Send cross call to all processors except self. */ | 806 | /* Send cross call to all processors except self. */ |
@@ -959,24 +958,6 @@ void flush_dcache_page_all(struct mm_struct *mm, struct page *page) | |||
959 | put_cpu(); | 958 | put_cpu(); |
960 | } | 959 | } |
961 | 960 | ||
962 | static void __smp_receive_signal_mask(cpumask_t mask) | ||
963 | { | ||
964 | smp_cross_call_masked(&xcall_receive_signal, 0, 0, 0, mask); | ||
965 | } | ||
966 | |||
967 | void smp_receive_signal(int cpu) | ||
968 | { | ||
969 | cpumask_t mask = cpumask_of_cpu(cpu); | ||
970 | |||
971 | if (cpu_online(cpu)) | ||
972 | __smp_receive_signal_mask(mask); | ||
973 | } | ||
974 | |||
975 | void smp_receive_signal_client(int irq, struct pt_regs *regs) | ||
976 | { | ||
977 | clear_softint(1 << irq); | ||
978 | } | ||
979 | |||
980 | void smp_new_mmu_context_version_client(int irq, struct pt_regs *regs) | 961 | void smp_new_mmu_context_version_client(int irq, struct pt_regs *regs) |
981 | { | 962 | { |
982 | struct mm_struct *mm; | 963 | struct mm_struct *mm; |
@@ -1374,7 +1355,13 @@ void __init smp_cpus_done(unsigned int max_cpus) | |||
1374 | 1355 | ||
1375 | void smp_send_reschedule(int cpu) | 1356 | void smp_send_reschedule(int cpu) |
1376 | { | 1357 | { |
1377 | smp_receive_signal(cpu); | 1358 | xcall_deliver((u64) &xcall_receive_signal, 0, 0, |
1359 | &cpumask_of_cpu(cpu)); | ||
1360 | } | ||
1361 | |||
1362 | void smp_receive_signal_client(int irq, struct pt_regs *regs) | ||
1363 | { | ||
1364 | clear_softint(1 << irq); | ||
1378 | } | 1365 | } |
1379 | 1366 | ||
1380 | /* This is a nop because we capture all other cpus | 1367 | /* This is a nop because we capture all other cpus |