From: Feng Liu <feliu@xxxxxxxxxx> Introduce API to get PF virtio device from the given VF PCI device so that other modules such as vfio in subsequent patch can use it. Signed-off-by: Feng Liu <feliu@xxxxxxxxxx> Reviewed-by: Parav Pandit <parav@xxxxxxxxxx> Reviewed-by: Jiri Pirko <jiri@xxxxxxxxxx> Signed-off-by: Yishai Hadas <yishaih@xxxxxxxxxx> --- drivers/virtio/virtio_pci_common.c | 12 ++++++++++++ include/linux/virtio.h | 1 + 2 files changed, 13 insertions(+) diff --git a/drivers/virtio/virtio_pci_common.c b/drivers/virtio/virtio_pci_common.c index 7a3e6edc4dd6..c64484cd5b13 100644 --- a/drivers/virtio/virtio_pci_common.c +++ b/drivers/virtio/virtio_pci_common.c @@ -648,6 +648,18 @@ static struct pci_driver virtio_pci_driver = { .sriov_configure = virtio_pci_sriov_configure, }; +struct virtio_device *virtio_pci_vf_get_pf_dev(struct pci_dev *pdev) +{ + struct virtio_pci_device *pf_vp_dev; + + pf_vp_dev = pci_iov_get_pf_drvdata(pdev, &virtio_pci_driver); + if (IS_ERR(pf_vp_dev)) + return NULL; + + return &pf_vp_dev->vdev; +} +EXPORT_SYMBOL_GPL(virtio_pci_vf_get_pf_dev); + module_pci_driver(virtio_pci_driver); MODULE_AUTHOR("Anthony Liguori <aliguori@xxxxxxxxxx>"); diff --git a/include/linux/virtio.h b/include/linux/virtio.h index 094a2ef1c8b8..4ae088ea9299 100644 --- a/include/linux/virtio.h +++ b/include/linux/virtio.h @@ -217,6 +217,7 @@ static inline struct virtio_driver *drv_to_virtio(struct device_driver *drv) int virtio_admin_cmd_exec(struct virtio_device *vdev, struct virtio_admin_cmd *cmd); +struct virtio_device *virtio_pci_vf_get_pf_dev(struct pci_dev *pdev); int register_virtio_driver(struct virtio_driver *drv); void unregister_virtio_driver(struct virtio_driver *drv); -- 2.27.0