4a5b69464e
Currently, the event channel rebind code is gated with the presence of the vector callback. The virtual interrupt controller on ARM has the concept of per-CPU interrupt (PPI) which allow us to support per-VCPU event channel. Therefore there is no need of vector callback for ARM. Xen is already using a free PPI to notify the guest VCPU of an event. Furthermore, the xen code initialization in Linux (see arch/arm/xen/enlighten.c) is requesting correctly a per-CPU IRQ. Introduce new helper xen_support_evtchn_rebind to allow architecture decide whether rebind an event is support or not. It will always return true on ARM and keep the same behavior on x86. This is also allow us to drop the usage of xen_have_vector_callback entirely in the ARM code. Signed-off-by: Julien Grall <julien.grall@citrix.com> Signed-off-by: David Vrabel <david.vrabel@citrix.com>
28 lines
537 B
C
28 lines
537 B
C
#ifndef _ASM_ARM64_XEN_EVENTS_H
|
|
#define _ASM_ARM64_XEN_EVENTS_H
|
|
|
|
#include <asm/ptrace.h>
|
|
#include <asm/atomic.h>
|
|
|
|
enum ipi_vector {
|
|
XEN_PLACEHOLDER_VECTOR,
|
|
|
|
/* Xen IPIs go here */
|
|
XEN_NR_IPIS,
|
|
};
|
|
|
|
static inline int xen_irqs_disabled(struct pt_regs *regs)
|
|
{
|
|
return raw_irqs_disabled_flags((unsigned long) regs->pstate);
|
|
}
|
|
|
|
#define xchg_xen_ulong(ptr, val) xchg((ptr), (val))
|
|
|
|
/* Rebind event channel is supported by default */
|
|
static inline bool xen_support_evtchn_rebind(void)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
#endif /* _ASM_ARM64_XEN_EVENTS_H */
|