diff options
author | Jens Axboe <jens.axboe@oracle.com> | 2008-06-26 05:21:54 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2008-06-26 05:21:54 -0400 |
commit | 3b16cf874861436725c43ba0b68bdd799297be7c (patch) | |
tree | 8e48647e3dce5dde6917f260f93c4b9f19945c55 /include/asm-x86/smp.h | |
parent | 3d4422332711ef48ef0f132f1fcbfcbd56c7f3d1 (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.h | 21 |
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 | ||
106 | static inline int smp_call_function_mask(cpumask_t mask, | 106 | static 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 | |||
111 | static 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 | ||
113 | void native_smp_prepare_boot_cpu(void); | 116 | void native_smp_prepare_boot_cpu(void); |
114 | void native_smp_prepare_cpus(unsigned int max_cpus); | 117 | void native_smp_prepare_cpus(unsigned int max_cpus); |
115 | void native_smp_cpus_done(unsigned int max_cpus); | 118 | void native_smp_cpus_done(unsigned int max_cpus); |
116 | int native_cpu_up(unsigned int cpunum); | 119 | int native_cpu_up(unsigned int cpunum); |
120 | void native_send_call_func_ipi(cpumask_t mask); | ||
121 | void native_send_call_func_single_ipi(int cpu); | ||
117 | 122 | ||
118 | extern int __cpu_disable(void); | 123 | extern int __cpu_disable(void); |
119 | extern void __cpu_die(unsigned int cpu); | 124 | extern void __cpu_die(unsigned int cpu); |
@@ -202,7 +207,5 @@ extern void cpu_uninit(void); | |||
202 | #endif | 207 | #endif |
203 | 208 | ||
204 | extern void smp_alloc_memory(void); | 209 | extern void smp_alloc_memory(void); |
205 | extern void lock_ipi_call_lock(void); | ||
206 | extern void unlock_ipi_call_lock(void); | ||
207 | #endif /* __ASSEMBLY__ */ | 210 | #endif /* __ASSEMBLY__ */ |
208 | #endif | 211 | #endif |