The SFC 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.

Signed-off-by: Anatoly Burakov <[email protected]>
---
 drivers/vdpa/sfc/sfc_vdpa.c | 39 +++++++------------------------------
 drivers/vdpa/sfc/sfc_vdpa.h |  2 --
 2 files changed, 7 insertions(+), 34 deletions(-)

diff --git a/drivers/vdpa/sfc/sfc_vdpa.c b/drivers/vdpa/sfc/sfc_vdpa.c
index eda111954f..99b4ced3f4 100644
--- a/drivers/vdpa/sfc/sfc_vdpa.c
+++ b/drivers/vdpa/sfc/sfc_vdpa.c
@@ -80,22 +80,12 @@ sfc_vdpa_vfio_setup(struct sfc_vdpa_adapter *sva)
                goto fail_container_create;
        }
 
-       rc = rte_vfio_get_group_num(rte_pci_get_sysfs_path(), dev_name,
-                                   &sva->iommu_group_num);
-       if (rc <= 0) {
-               sfc_vdpa_err(sva, "failed to get IOMMU group for %s : %s",
-                            dev_name, rte_strerror(-rc));
-               goto fail_get_group_num;
-       }
-
-       sva->vfio_group_fd =
-               rte_vfio_container_group_bind(sva->vfio_container_fd,
-                                             sva->iommu_group_num);
-       if (sva->vfio_group_fd < 0) {
-               sfc_vdpa_err(sva,
-                            "failed to bind IOMMU group %d to container %d",
-                            sva->iommu_group_num, sva->vfio_container_fd);
-               goto fail_group_bind;
+       rc = rte_vfio_container_assign_device(sva->vfio_container_fd,
+                       rte_pci_get_sysfs_path(), dev_name);
+       if (rc < 0) {
+               sfc_vdpa_err(sva, "failed to assign device %s to container %d",
+                            dev_name, sva->vfio_container_fd);
+               goto fail_device_assign;
        }
 
        if (rte_pci_map_device(dev) != 0) {
@@ -109,15 +99,7 @@ sfc_vdpa_vfio_setup(struct sfc_vdpa_adapter *sva)
        return 0;
 
 fail_pci_map_device:
-       if (rte_vfio_container_group_unbind(sva->vfio_container_fd,
-                                       sva->iommu_group_num) != 0) {
-               sfc_vdpa_err(sva,
-                            "failed to unbind IOMMU group %d from container 
%d",
-                            sva->iommu_group_num, sva->vfio_container_fd);
-       }
-
-fail_group_bind:
-fail_get_group_num:
+fail_device_assign:
        if (rte_vfio_container_destroy(sva->vfio_container_fd) != 0) {
                sfc_vdpa_err(sva, "failed to destroy container %d",
                             sva->vfio_container_fd);
@@ -132,13 +114,6 @@ sfc_vdpa_vfio_teardown(struct sfc_vdpa_adapter *sva)
 {
        rte_pci_unmap_device(sva->pdev);
 
-       if (rte_vfio_container_group_unbind(sva->vfio_container_fd,
-                                           sva->iommu_group_num) != 0) {
-               sfc_vdpa_err(sva,
-                            "failed to unbind IOMMU group %d from container 
%d",
-                            sva->iommu_group_num, sva->vfio_container_fd);
-       }
-
        if (rte_vfio_container_destroy(sva->vfio_container_fd) != 0) {
                sfc_vdpa_err(sva,
                             "failed to destroy container %d",
diff --git a/drivers/vdpa/sfc/sfc_vdpa.h b/drivers/vdpa/sfc/sfc_vdpa.h
index 2b843e563d..99a81fd1b0 100644
--- a/drivers/vdpa/sfc/sfc_vdpa.h
+++ b/drivers/vdpa/sfc/sfc_vdpa.h
@@ -70,10 +70,8 @@ struct sfc_vdpa_adapter {
 
        sfc_vdpa_filter_t               filters;
 
-       int                             vfio_group_fd;
        int                             vfio_dev_fd;
        int                             vfio_container_fd;
-       int                             iommu_group_num;
        struct sfc_vdpa_ops_data        *ops_data;
 };
 
-- 
2.47.3

Reply via email to