xref: /openbmc/linux/arch/x86/xen/smp.h (revision fb9b7b4b)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2f447d56dSBen Guthro #ifndef _XEN_SMP_H
3f447d56dSBen Guthro 
45fc509bcSBoris Ostrovsky #ifdef CONFIG_SMP
5*fb9b7b4bSArnd Bergmann 
6*fb9b7b4bSArnd Bergmann void asm_cpu_bringup_and_idle(void);
7*fb9b7b4bSArnd Bergmann asmlinkage void cpu_bringup_and_idle(void);
8*fb9b7b4bSArnd Bergmann 
9f447d56dSBen Guthro extern void xen_send_IPI_mask(const struct cpumask *mask,
10f447d56dSBen Guthro 			      int vector);
11f447d56dSBen Guthro extern void xen_send_IPI_mask_allbutself(const struct cpumask *mask,
12f447d56dSBen Guthro 				int vector);
13f447d56dSBen Guthro extern void xen_send_IPI_allbutself(int vector);
14f447d56dSBen Guthro extern void xen_send_IPI_all(int vector);
15f447d56dSBen Guthro extern void xen_send_IPI_self(int vector);
16f447d56dSBen Guthro 
175fc509bcSBoris Ostrovsky extern int xen_smp_intr_init(unsigned int cpu);
185fc509bcSBoris Ostrovsky extern void xen_smp_intr_free(unsigned int cpu);
1904e95761SVitaly Kuznetsov int xen_smp_intr_init_pv(unsigned int cpu);
2004e95761SVitaly Kuznetsov void xen_smp_intr_free_pv(unsigned int cpu);
215fc509bcSBoris Ostrovsky 
22ae039001SAnkur Arora void xen_smp_cpus_done(unsigned int max_cpus);
23ae039001SAnkur Arora 
24a52482d9SVitaly Kuznetsov void xen_smp_send_reschedule(int cpu);
25a52482d9SVitaly Kuznetsov void xen_smp_send_call_function_ipi(const struct cpumask *mask);
26a52482d9SVitaly Kuznetsov void xen_smp_send_call_function_single_ipi(int cpu);
2783b96794SVitaly Kuznetsov 
28f697cb00SJuergen Gross void __noreturn xen_cpu_bringup_again(unsigned long stack);
29336f560aSJuergen Gross 
3083b96794SVitaly Kuznetsov struct xen_common_irq {
3183b96794SVitaly Kuznetsov 	int irq;
3283b96794SVitaly Kuznetsov 	char *name;
3383b96794SVitaly Kuznetsov };
345fc509bcSBoris Ostrovsky #else /* CONFIG_SMP */
355fc509bcSBoris Ostrovsky 
xen_smp_intr_init(unsigned int cpu)365fc509bcSBoris Ostrovsky static inline int xen_smp_intr_init(unsigned int cpu)
375fc509bcSBoris Ostrovsky {
385fc509bcSBoris Ostrovsky 	return 0;
395fc509bcSBoris Ostrovsky }
xen_smp_intr_free(unsigned int cpu)405fc509bcSBoris Ostrovsky static inline void xen_smp_intr_free(unsigned int cpu) {}
4104e95761SVitaly Kuznetsov 
xen_smp_intr_init_pv(unsigned int cpu)4204e95761SVitaly Kuznetsov static inline int xen_smp_intr_init_pv(unsigned int cpu)
4304e95761SVitaly Kuznetsov {
4404e95761SVitaly Kuznetsov 	return 0;
4504e95761SVitaly Kuznetsov }
xen_smp_intr_free_pv(unsigned int cpu)4604e95761SVitaly Kuznetsov static inline void xen_smp_intr_free_pv(unsigned int cpu) {}
475fc509bcSBoris Ostrovsky #endif /* CONFIG_SMP */
485fc509bcSBoris Ostrovsky 
49f447d56dSBen Guthro #endif
50