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