1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _XEN_SMP_H
3
4#ifdef CONFIG_SMP
5
6void asm_cpu_bringup_and_idle(void);
7asmlinkage void cpu_bringup_and_idle(void);
8
9extern void xen_send_IPI_mask(const struct cpumask *mask,
10 int vector);
11extern void xen_send_IPI_mask_allbutself(const struct cpumask *mask,
12 int vector);
13extern void xen_send_IPI_allbutself(int vector);
14extern void xen_send_IPI_all(int vector);
15extern void xen_send_IPI_self(int vector);
16
17extern int xen_smp_intr_init(unsigned int cpu);
18extern void xen_smp_intr_free(unsigned int cpu);
19int xen_smp_intr_init_pv(unsigned int cpu);
20void xen_smp_intr_free_pv(unsigned int cpu);
21
22void xen_smp_cpus_done(unsigned int max_cpus);
23
24void xen_smp_send_reschedule(int cpu);
25void xen_smp_send_call_function_ipi(const struct cpumask *mask);
26void xen_smp_send_call_function_single_ipi(int cpu);
27
28void __noreturn xen_cpu_bringup_again(unsigned long stack);
29
30struct xen_common_irq {
31 int irq;
32 char *name;
33};
34#else /* CONFIG_SMP */
35
36static inline int xen_smp_intr_init(unsigned int cpu)
37{
38 return 0;
39}
40static inline void xen_smp_intr_free(unsigned int cpu) {}
41
42static inline int xen_smp_intr_init_pv(unsigned int cpu)
43{
44 return 0;
45}
46static inline void xen_smp_intr_free_pv(unsigned int cpu) {}
47#endif /* CONFIG_SMP */
48
49#endif
50

source code of linux/arch/x86/xen/smp.h