virt: acrn: Introduce interrupt injection interfaces
ACRN userspace need to inject virtual interrupts into a User VM in devices emulation. HSM needs provide interfaces to do so. Introduce following interrupt injection interfaces: ioctl ACRN_IOCTL_SET_IRQLINE: Pass data from userspace to the hypervisor, and inform the hypervisor to inject a virtual IOAPIC GSI interrupt to a User VM. ioctl ACRN_IOCTL_INJECT_MSI: Pass data struct acrn_msi_entry from userspace to the hypervisor, and inform the hypervisor to inject a virtual MSI to a User VM. ioctl ACRN_IOCTL_VM_INTR_MONITOR: Set a 4-Kbyte aligned shared page for statistics information of interrupts of a User VM. 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-13-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
ce011e1363
commit
c7cf8d2724
@@ -417,6 +417,16 @@ struct acrn_pcidev {
|
||||
__u32 bar[ACRN_PCI_NUM_BARS];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct acrn_msi_entry - Info for injecting a MSI interrupt to a VM
|
||||
* @msi_addr: MSI addr[19:12] with dest vCPU ID
|
||||
* @msi_data: MSI data[7:0] with vector
|
||||
*/
|
||||
struct acrn_msi_entry {
|
||||
__u64 msi_addr;
|
||||
__u64 msi_data;
|
||||
};
|
||||
|
||||
/* The ioctl type, documented in ioctl-number.rst */
|
||||
#define ACRN_IOCTL_TYPE 0xA2
|
||||
|
||||
@@ -436,6 +446,13 @@ struct acrn_pcidev {
|
||||
#define ACRN_IOCTL_SET_VCPU_REGS \
|
||||
_IOW(ACRN_IOCTL_TYPE, 0x16, struct acrn_vcpu_regs)
|
||||
|
||||
#define ACRN_IOCTL_INJECT_MSI \
|
||||
_IOW(ACRN_IOCTL_TYPE, 0x23, struct acrn_msi_entry)
|
||||
#define ACRN_IOCTL_VM_INTR_MONITOR \
|
||||
_IOW(ACRN_IOCTL_TYPE, 0x24, unsigned long)
|
||||
#define ACRN_IOCTL_SET_IRQLINE \
|
||||
_IOW(ACRN_IOCTL_TYPE, 0x25, __u64)
|
||||
|
||||
#define ACRN_IOCTL_NOTIFY_REQUEST_FINISH \
|
||||
_IOW(ACRN_IOCTL_TYPE, 0x31, struct acrn_ioreq_notify)
|
||||
#define ACRN_IOCTL_CREATE_IOREQ_CLIENT \
|
||||
|
||||
Reference in New Issue
Block a user