068d9b067c83cc2f6d606d0d790a6dec76c3e326
[platform/kernel/linux-starfive.git] / arch / x86 / include / asm / xen / events.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _ASM_X86_XEN_EVENTS_H
3 #define _ASM_X86_XEN_EVENTS_H
4
5 #include <xen/xen.h>
6
7 enum ipi_vector {
8         XEN_RESCHEDULE_VECTOR,
9         XEN_CALL_FUNCTION_VECTOR,
10         XEN_CALL_FUNCTION_SINGLE_VECTOR,
11         XEN_SPIN_UNLOCK_VECTOR,
12         XEN_IRQ_WORK_VECTOR,
13         XEN_NMI_VECTOR,
14
15         XEN_NR_IPIS,
16 };
17
18 static inline int xen_irqs_disabled(struct pt_regs *regs)
19 {
20         return raw_irqs_disabled_flags(regs->flags);
21 }
22
23 /* No need for a barrier -- XCHG is a barrier on x86. */
24 #define xchg_xen_ulong(ptr, val) xchg((ptr), (val))
25
26 extern int xen_have_vector_callback;
27
28 /*
29  * Events delivered via platform PCI interrupts are always
30  * routed to vcpu 0 and hence cannot be rebound.
31  */
32 static inline bool xen_support_evtchn_rebind(void)
33 {
34         return (!xen_hvm_domain() || xen_have_vector_callback);
35 }
36
37 #endif /* _ASM_X86_XEN_EVENTS_H */