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 Ostrovskystatic 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 Ostrovskystatic inline void xen_smp_intr_free(unsigned int cpu) {} 4104e95761SVitaly Kuznetsov xen_smp_intr_init_pv(unsigned int cpu)4204e95761SVitaly Kuznetsovstatic 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 Kuznetsovstatic inline void xen_smp_intr_free_pv(unsigned int cpu) {} 475fc509bcSBoris Ostrovsky #endif /* CONFIG_SMP */ 485fc509bcSBoris Ostrovsky 49f447d56dSBen Guthro #endif 50