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>
This commit is contained in:
@@ -59,9 +59,9 @@ struct smp_ops {
|
||||
|
||||
void (*smp_send_stop)(void);
|
||||
void (*smp_send_reschedule)(int cpu);
|
||||
int (*smp_call_function_mask)(cpumask_t mask,
|
||||
void (*func)(void *info), void *info,
|
||||
int wait);
|
||||
|
||||
void (*send_call_func_ipi)(cpumask_t mask);
|
||||
void (*send_call_func_single_ipi)(int cpu);
|
||||
};
|
||||
|
||||
/* Globals due to paravirt */
|
||||
@@ -103,17 +103,22 @@ static inline void smp_send_reschedule(int cpu)
|
||||
smp_ops.smp_send_reschedule(cpu);
|
||||
}
|
||||
|
||||
static inline int smp_call_function_mask(cpumask_t mask,
|
||||
void (*func) (void *info), void *info,
|
||||
int wait)
|
||||
static inline void arch_send_call_function_single_ipi(int cpu)
|
||||
{
|
||||
return smp_ops.smp_call_function_mask(mask, func, info, wait);
|
||||
smp_ops.send_call_func_single_ipi(cpu);
|
||||
}
|
||||
|
||||
static inline void arch_send_call_function_ipi(cpumask_t mask)
|
||||
{
|
||||
smp_ops.send_call_func_ipi(mask);
|
||||
}
|
||||
|
||||
void native_smp_prepare_boot_cpu(void);
|
||||
void native_smp_prepare_cpus(unsigned int max_cpus);
|
||||
void native_smp_cpus_done(unsigned int max_cpus);
|
||||
int native_cpu_up(unsigned int cpunum);
|
||||
void native_send_call_func_ipi(cpumask_t mask);
|
||||
void native_send_call_func_single_ipi(int cpu);
|
||||
|
||||
extern int __cpu_disable(void);
|
||||
extern void __cpu_die(unsigned int cpu);
|
||||
@@ -202,7 +207,5 @@ extern void cpu_uninit(void);
|
||||
#endif
|
||||
|
||||
extern void smp_alloc_memory(void);
|
||||
extern void lock_ipi_call_lock(void);
|
||||
extern void unlock_ipi_call_lock(void);
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user