The NFP vDPA driver uses VFIO group bind/unbind functionality for container
device assignment purposes. Use the new container device assignment API
instead to provide clearer semantics. Since group API is no longer used
after these changes, remove its implementation.

Signed-off-by: Anatoly Burakov <[email protected]>
---
 drivers/vdpa/nfp/nfp_vdpa.c | 37 +++++--------------------------------
 1 file changed, 5 insertions(+), 32 deletions(-)

diff --git a/drivers/vdpa/nfp/nfp_vdpa.c b/drivers/vdpa/nfp/nfp_vdpa.c
index f4fd5c92ec..efd7ee7d95 100644
--- a/drivers/vdpa/nfp/nfp_vdpa.c
+++ b/drivers/vdpa/nfp/nfp_vdpa.c
@@ -36,9 +36,7 @@ struct nfp_vdpa_dev {
        struct nfp_vdpa_hw hw;
 
        int vfio_container_fd;
-       int vfio_group_fd;
        int vfio_dev_fd;
-       int iommu_group;
 
        rte_thread_t tid;    /**< Thread for notify relay */
        int epoll_fd;
@@ -122,33 +120,26 @@ nfp_vdpa_vfio_setup(struct nfp_vdpa_dev *device)
        rte_pci_unmap_device(pci_dev);
 
        rte_pci_device_name(&pci_dev->addr, dev_name, RTE_DEV_NAME_MAX_LEN);
-       ret = rte_vfio_get_group_num(rte_pci_get_sysfs_path(), dev_name,
-                       &device->iommu_group);
-       if (ret <= 0)
-               return -1;
 
        device->vfio_container_fd = rte_vfio_container_create();
        if (device->vfio_container_fd < 0)
                return -1;
 
-       device->vfio_group_fd = rte_vfio_container_group_bind(
-                       device->vfio_container_fd, device->iommu_group);
-       if (device->vfio_group_fd < 0)
+       ret = rte_vfio_container_assign_device(device->vfio_container_fd,
+                       rte_pci_get_sysfs_path(), dev_name);
+       if (ret < 0)
                goto container_destroy;
 
-       DRV_VDPA_LOG(DEBUG, "The container_fd=%d, group_fd=%d.",
-                       device->vfio_container_fd, device->vfio_group_fd);
+       DRV_VDPA_LOG(DEBUG, "container_fd=%d", device->vfio_container_fd);
 
        ret = rte_pci_map_device(pci_dev);
        if (ret != 0)
-               goto group_unbind;
+               goto container_destroy;
 
        device->vfio_dev_fd = rte_intr_dev_fd_get(pci_dev->intr_handle);
 
        return 0;
 
-group_unbind:
-       rte_vfio_container_group_unbind(device->vfio_container_fd, 
device->iommu_group);
 container_destroy:
        rte_vfio_container_destroy(device->vfio_container_fd);
 
@@ -159,7 +150,6 @@ static void
 nfp_vdpa_vfio_teardown(struct nfp_vdpa_dev *device)
 {
        rte_pci_unmap_device(device->pci_dev);
-       rte_vfio_container_group_unbind(device->vfio_container_fd, 
device->iommu_group);
        rte_vfio_container_destroy(device->vfio_container_fd);
 }
 
@@ -1025,22 +1015,6 @@ nfp_vdpa_dev_close(int vid)
        return 0;
 }
 
-static int
-nfp_vdpa_get_vfio_group_fd(int vid)
-{
-       struct rte_vdpa_device *vdev;
-       struct nfp_vdpa_dev_node *node;
-
-       vdev = rte_vhost_get_vdpa_device(vid);
-       node = nfp_vdpa_find_node_by_vdev(vdev);
-       if (node == NULL) {
-               DRV_VDPA_LOG(ERR, "Invalid vDPA device: %p.", vdev);
-               return -ENODEV;
-       }
-
-       return node->device->vfio_group_fd;
-}
-
 static int
 nfp_vdpa_get_vfio_device_fd(int vid)
 {
@@ -1192,7 +1166,6 @@ struct rte_vdpa_dev_ops nfp_vdpa_ops = {
        .dev_close = nfp_vdpa_dev_close,
        .set_vring_state = nfp_vdpa_set_vring_state,
        .set_features = nfp_vdpa_set_features,
-       .get_vfio_group_fd = nfp_vdpa_get_vfio_group_fd,
        .get_vfio_device_fd = nfp_vdpa_get_vfio_device_fd,
        .get_notify_area = nfp_vdpa_get_notify_area,
 };
-- 
2.52.0

Reply via email to