aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-x86/smp.h
diff options
context:
space:
mode:
authorJens Axboe <jens.axboe@oracle.com>2008-06-26 05:21:54 -0400
committerJens Axboe <jens.axboe@oracle.com>2008-06-26 05:21:54 -0400
commit3b16cf874861436725c43ba0b68bdd799297be7c (patch)
tree8e48647e3dce5dde6917f260f93c4b9f19945c55 /include/asm-x86/smp.h
parent3d4422332711ef48ef0f132f1fcbfcbd56c7f3d1 (diff)
x86: convert to generic helpers for IPI function calls
This converts x86, x86-64, and xen to use the new helpers for smp_call_function() and friends, and adds support for smp_call_function_single(). Acked-by: Ingo Molnar <mingo@elte.hu> Acked-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'include/asm-x86/smp.h')
-rw-r--r--include/asm-x86/smp.h21
1 files changed, 12 insertions, 9 deletions
diff --git a/include/asm-x86/smp.h b/include/asm-x86/smp.h
index 1ebaa5cd3112..e3c24807b59b 100644
--- a/include/asm-x86/smp.h
+++ b/include/asm-x86/smp.h
@@ -59,9 +59,9 @@ struct smp_ops {
59 59
60 void (*smp_send_stop)(void); 60 void (*smp_send_stop)(void);
61 void (*smp_send_reschedule)(int cpu); 61 void (*smp_send_reschedule)(int cpu);
62 int (*smp_call_function_mask)(cpumask_t mask, 62
63 void (*func)(void *info), void *info, 63 void (*send_call_func_ipi)(cpumask_t mask);
64 int wait); 64 void (*send_call_func_single_ipi)(int cpu);
65}; 65};
66 66
67/* Globals due to paravirt */ 67/* Globals due to paravirt */
@@ -103,17 +103,22 @@ static inline void smp_send_reschedule(int cpu)
103 smp_ops.smp_send_reschedule(cpu); 103 smp_ops.smp_send_reschedule(cpu);
104} 104}
105 105
106static inline int smp_call_function_mask(cpumask_t mask, 106static inline void arch_send_call_function_single_ipi(int cpu)
107 void (*func) (void *info), void *info, 107{
108 int wait) 108 smp_ops.send_call_func_single_ipi(cpu);
109}
110
111static inline void arch_send_call_function_ipi(cpumask_t mask)
109{ 112{
110 return smp_ops.smp_call_function_mask(mask, func, info, wait); 113 smp_ops.send_call_func_ipi(mask);
111} 114}
112 115
113void native_smp_prepare_boot_cpu(void); 116void native_smp_prepare_boot_cpu(void);
114void native_smp_prepare_cpus(unsigned int max_cpus); 117void native_smp_prepare_cpus(unsigned int max_cpus);
115void native_smp_cpus_done(unsigned int max_cpus); 118void native_smp_cpus_done(unsigned int max_cpus);
116int native_cpu_up(unsigned int cpunum); 119int native_cpu_up(unsigned int cpunum);
120void native_send_call_func_ipi(cpumask_t mask);
121void native_send_call_func_single_ipi(int cpu);
117 122
118extern int __cpu_disable(void); 123extern int __cpu_disable(void);
119extern void __cpu_die(unsigned int cpu); 124extern void __cpu_die(unsigned int cpu);
@@ -202,7 +207,5 @@ extern void cpu_uninit(void);
202#endif 207#endif
203 208
204extern void smp_alloc_memory(void); 209extern void smp_alloc_memory(void);
205extern void lock_ipi_call_lock(void);
206extern void unlock_ipi_call_lock(void);
207#endif /* __ASSEMBLY__ */ 210#endif /* __ASSEMBLY__ */
208#endif 211#endif