This API returns the host irq for the MSI/MSI-X interrrupts. Signed-off-by: Feng Wu <feng.wu@xxxxxxxxx> --- drivers/vfio/pci/vfio_pci.c | 10 ++++++++++ include/linux/vfio.h | 2 ++ 2 files changed, 12 insertions(+), 0 deletions(-) diff --git a/drivers/vfio/pci/vfio_pci.c b/drivers/vfio/pci/vfio_pci.c index 9558da3..4fb9828 100644 --- a/drivers/vfio/pci/vfio_pci.c +++ b/drivers/vfio/pci/vfio_pci.c @@ -1009,6 +1009,16 @@ put_devs: kfree(devs.devices); } +unsigned int vfio_msi_get_irq(struct vfio_device *device, int vector, bool msix) +{ + struct vfio_pci_device *vdev = + (struct vfio_pci_device *)vfio_device_data(device); + struct pci_dev *pdev = vdev->pdev; + + return msix ? vdev->msix[vector].vector : pdev->irq + vector; +} +EXPORT_SYMBOL_GPL(vfio_msi_get_irq); + static void __exit vfio_pci_cleanup(void) { pci_unregister_driver(&vfio_pci_driver); diff --git a/include/linux/vfio.h b/include/linux/vfio.h index d320411..007ca55 100644 --- a/include/linux/vfio.h +++ b/include/linux/vfio.h @@ -92,6 +92,8 @@ extern void vfio_unregister_iommu_driver( /* * External user API */ +extern unsigned int vfio_msi_get_irq(struct vfio_device *device, int vector, + bool msix); extern struct vfio_group *vfio_group_get_external_user(struct file *filep); extern void vfio_group_put_external_user(struct vfio_group *group); extern int vfio_external_user_iommu_id(struct vfio_group *group); -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html