提交 41e3175a 编写于 作者: T Tina Zhang 提交者: Zheng Zengkai

vfio: Use capability chains to handle device specific irq

virt inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I401IF
CVE: NA

------------------------------

Caps the number of irqs with fixed indexes and uses capability chains
to chain device specific irqs.
Signed-off-by: NTina Zhang <tina.zhang@intel.com>
Signed-off-by: NEric Auger <eric.auger@redhat.com>
Signed-off-by: Kunkun Jiang<jiangkunkun@huawei.com>
[Eric: Put cap_offset at the end of the vfio_irq_info struct,
remove GFX IRQ at the moment and remove any reference to this latter
in the commit message]
Reviewed-by: NKeqian Zhu <zhukeqian1@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 e57dd79b
...@@ -712,11 +712,27 @@ struct vfio_irq_info { ...@@ -712,11 +712,27 @@ struct vfio_irq_info {
#define VFIO_IRQ_INFO_MASKABLE (1 << 1) #define VFIO_IRQ_INFO_MASKABLE (1 << 1)
#define VFIO_IRQ_INFO_AUTOMASKED (1 << 2) #define VFIO_IRQ_INFO_AUTOMASKED (1 << 2)
#define VFIO_IRQ_INFO_NORESIZE (1 << 3) #define VFIO_IRQ_INFO_NORESIZE (1 << 3)
#define VFIO_IRQ_INFO_FLAG_CAPS (1 << 4) /* Info supports caps */
__u32 index; /* IRQ index */ __u32 index; /* IRQ index */
__u32 count; /* Number of IRQs within this index */ __u32 count; /* Number of IRQs within this index */
__u32 cap_offset; /* Offset within info struct of first cap */
}; };
#define VFIO_DEVICE_GET_IRQ_INFO _IO(VFIO_TYPE, VFIO_BASE + 9) #define VFIO_DEVICE_GET_IRQ_INFO _IO(VFIO_TYPE, VFIO_BASE + 9)
/*
* The irq type capability allows IRQs unique to a specific device or
* class of devices to be exposed.
*
* The structures below define version 1 of this capability.
*/
#define VFIO_IRQ_INFO_CAP_TYPE 3
struct vfio_irq_info_cap_type {
struct vfio_info_cap_header header;
__u32 type; /* global per bus driver */
__u32 subtype; /* type specific */
};
/** /**
* VFIO_DEVICE_SET_IRQS - _IOW(VFIO_TYPE, VFIO_BASE + 10, struct vfio_irq_set) * VFIO_DEVICE_SET_IRQS - _IOW(VFIO_TYPE, VFIO_BASE + 10, struct vfio_irq_set)
* *
...@@ -818,7 +834,8 @@ enum { ...@@ -818,7 +834,8 @@ enum {
VFIO_PCI_MSIX_IRQ_INDEX, VFIO_PCI_MSIX_IRQ_INDEX,
VFIO_PCI_ERR_IRQ_INDEX, VFIO_PCI_ERR_IRQ_INDEX,
VFIO_PCI_REQ_IRQ_INDEX, VFIO_PCI_REQ_IRQ_INDEX,
VFIO_PCI_NUM_IRQS VFIO_PCI_NUM_IRQS = 5 /* Fixed user ABI, IRQ indexes >=5 use */
/* device specific cap to define content */
}; };
/* /*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册