mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-24 05:01:03 +02:00
virt: acrn: Introduce ioeventfd
ioeventfd is a mechanism to register PIO/MMIO regions to trigger an eventfd signal when written to by a User VM. ACRN userspace can register any arbitrary I/O address with a corresponding eventfd and then pass the eventfd to a specific end-point of interest for handling. Vhost is a kernel-level virtio server which uses eventfd for signalling. To support vhost on ACRN, ioeventfd is introduced in HSM. A new I/O client dedicated to ioeventfd is associated with a User VM during VM creation. HSM provides ioctls to associate an I/O region with a eventfd. The I/O client signals a eventfd once its corresponding I/O region is matched with an I/O request. Cc: Zhi Wang <zhi.a.wang@intel.com> Cc: Zhenyu Wang <zhenyuw@linux.intel.com> Cc: Yu Wang <yu1.wang@intel.com> Cc: Reinette Chatre <reinette.chatre@intel.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Reviewed-by: Zhi Wang <zhi.a.wang@intel.com> Reviewed-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: Shuo Liu <shuo.a.liu@intel.com> Link: https://lore.kernel.org/r/20210207031040.49576-16-shuo.a.liu@intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
5a0c9f176f
commit
d8ad515156
@@ -479,6 +479,32 @@ enum acrn_pm_cmd_type {
|
||||
ACRN_PMCMD_GET_CX_DATA,
|
||||
};
|
||||
|
||||
#define ACRN_IOEVENTFD_FLAG_PIO 0x01
|
||||
#define ACRN_IOEVENTFD_FLAG_DATAMATCH 0x02
|
||||
#define ACRN_IOEVENTFD_FLAG_DEASSIGN 0x04
|
||||
/**
|
||||
* struct acrn_ioeventfd - Data to operate a &struct hsm_ioeventfd
|
||||
* @fd: The fd of eventfd associated with a hsm_ioeventfd
|
||||
* @flags: Logical-OR of ACRN_IOEVENTFD_FLAG_*
|
||||
* @addr: The start address of IO range of ioeventfd
|
||||
* @len: The length of IO range of ioeventfd
|
||||
* @reserved: Reserved and should be 0
|
||||
* @data: Data for data matching
|
||||
*
|
||||
* Without flag ACRN_IOEVENTFD_FLAG_DEASSIGN, ioctl ACRN_IOCTL_IOEVENTFD
|
||||
* creates a &struct hsm_ioeventfd with properties originated from &struct
|
||||
* acrn_ioeventfd. With flag ACRN_IOEVENTFD_FLAG_DEASSIGN, ioctl
|
||||
* ACRN_IOCTL_IOEVENTFD destroys the &struct hsm_ioeventfd matching the fd.
|
||||
*/
|
||||
struct acrn_ioeventfd {
|
||||
__u32 fd;
|
||||
__u32 flags;
|
||||
__u64 addr;
|
||||
__u32 len;
|
||||
__u32 reserved;
|
||||
__u64 data;
|
||||
};
|
||||
|
||||
/* The ioctl type, documented in ioctl-number.rst */
|
||||
#define ACRN_IOCTL_TYPE 0xA2
|
||||
|
||||
@@ -533,4 +559,7 @@ enum acrn_pm_cmd_type {
|
||||
#define ACRN_IOCTL_PM_GET_CPU_STATE \
|
||||
_IOWR(ACRN_IOCTL_TYPE, 0x60, __u64)
|
||||
|
||||
#define ACRN_IOCTL_IOEVENTFD \
|
||||
_IOW(ACRN_IOCTL_TYPE, 0x70, struct acrn_ioeventfd)
|
||||
|
||||
#endif /* _UAPI_ACRN_H */
|
||||
|
Reference in New Issue
Block a user