mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 01:04:19 +08:00
38e20b07ef
Set the callback to receive evtchns from Xen, using the callback vector delivery mechanism. The traditional way for receiving event channel notifications from Xen is via the interrupts from the platform PCI device. The callback vector is a newer alternative that allow us to receive notifications on any vcpu and doesn't need any PCI support: we allocate a vector exclusively to receive events, in the vector handler we don't need to interact with the vlapic, therefore we avoid a VMEXIT. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Signed-off-by: Sheng Yang <sheng@linux.intel.com> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
31 lines
695 B
C
31 lines
695 B
C
/* Simple wrappers around HVM functions */
|
|
#ifndef XEN_HVM_H__
|
|
#define XEN_HVM_H__
|
|
|
|
#include <xen/interface/hvm/params.h>
|
|
#include <asm/xen/hypercall.h>
|
|
|
|
static inline int hvm_get_parameter(int idx, uint64_t *value)
|
|
{
|
|
struct xen_hvm_param xhv;
|
|
int r;
|
|
|
|
xhv.domid = DOMID_SELF;
|
|
xhv.index = idx;
|
|
r = HYPERVISOR_hvm_op(HVMOP_get_param, &xhv);
|
|
if (r < 0) {
|
|
printk(KERN_ERR "Cannot get hvm parameter %d: %d!\n",
|
|
idx, r);
|
|
return r;
|
|
}
|
|
*value = xhv.value;
|
|
return r;
|
|
}
|
|
|
|
#define HVM_CALLBACK_VIA_TYPE_VECTOR 0x2
|
|
#define HVM_CALLBACK_VIA_TYPE_SHIFT 56
|
|
#define HVM_CALLBACK_VECTOR(x) (((uint64_t)HVM_CALLBACK_VIA_TYPE_VECTOR)<<\
|
|
HVM_CALLBACK_VIA_TYPE_SHIFT | (x))
|
|
|
|
#endif /* XEN_HVM_H__ */
|