vfio: expose clear group function for internal usages
authorHemant Agrawal <hemant.agrawal@nxp.com>
Mon, 15 Jan 2018 05:11:25 +0000 (10:41 +0530)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 16 Jan 2018 23:43:04 +0000 (00:43 +0100)
other vfio based module e.g. fslmc will also need to use
the clear_group call.
So, exposing it and renaming it to *rte_vfio_clear_group*

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
lib/librte_eal/bsdapp/eal/eal.c
lib/librte_eal/common/include/rte_vfio.h
lib/librte_eal/linuxapp/eal/eal_vfio.c
lib/librte_eal/linuxapp/eal/eal_vfio.h
lib/librte_eal/linuxapp/eal/eal_vfio_mp_sync.c
lib/librte_eal/rte_eal_version.map

index 369a682..7239243 100644 (file)
@@ -778,3 +778,8 @@ int rte_vfio_noiommu_is_enabled(void)
 {
        return 0;
 }
+
+int rte_vfio_clear_group(int vfio_group_fd)
+{
+       return 0;
+}
index a69c4ff..daa0dbd 100644 (file)
@@ -148,6 +148,10 @@ int rte_vfio_is_enabled(const char *modname);
  */
 int rte_vfio_noiommu_is_enabled(void);
 
+/* remove group fd from internal VFIO group fd array */
+int
+rte_vfio_clear_group(int vfio_group_fd);
+
 #endif /* VFIO_PRESENT */
 
 #endif /* _RTE_VFIO_H_ */
index 681eab5..5371ec2 100644 (file)
@@ -197,7 +197,7 @@ vfio_group_device_count(int vfio_group_fd)
 }
 
 int
-clear_group(int vfio_group_fd)
+rte_vfio_clear_group(int vfio_group_fd)
 {
        int i;
        int socket_fd, ret;
@@ -300,12 +300,12 @@ rte_vfio_setup_device(const char *sysfs_base, const char *dev_addr,
                RTE_LOG(ERR, EAL, "  %s cannot get group status, "
                                "error %i (%s)\n", dev_addr, errno, strerror(errno));
                close(vfio_group_fd);
-               clear_group(vfio_group_fd);
+               rte_vfio_clear_group(vfio_group_fd);
                return -1;
        } else if (!(group_status.flags & VFIO_GROUP_FLAGS_VIABLE)) {
                RTE_LOG(ERR, EAL, "  %s VFIO group is not viable!\n", dev_addr);
                close(vfio_group_fd);
-               clear_group(vfio_group_fd);
+               rte_vfio_clear_group(vfio_group_fd);
                return -1;
        }
 
@@ -319,7 +319,7 @@ rte_vfio_setup_device(const char *sysfs_base, const char *dev_addr,
                        RTE_LOG(ERR, EAL, "  %s cannot add VFIO group to container, "
                                        "error %i (%s)\n", dev_addr, errno, strerror(errno));
                        close(vfio_group_fd);
-                       clear_group(vfio_group_fd);
+                       rte_vfio_clear_group(vfio_group_fd);
                        return -1;
                }
 
@@ -341,7 +341,7 @@ rte_vfio_setup_device(const char *sysfs_base, const char *dev_addr,
                                        "  %s failed to select IOMMU type\n",
                                        dev_addr);
                                close(vfio_group_fd);
-                               clear_group(vfio_group_fd);
+                               rte_vfio_clear_group(vfio_group_fd);
                                return -1;
                        }
                        ret = t->dma_map_func(vfio_cfg.vfio_container_fd);
@@ -350,7 +350,7 @@ rte_vfio_setup_device(const char *sysfs_base, const char *dev_addr,
                                        "  %s DMA remapping failed, error %i (%s)\n",
                                        dev_addr, errno, strerror(errno));
                                close(vfio_group_fd);
-                               clear_group(vfio_group_fd);
+                               rte_vfio_clear_group(vfio_group_fd);
                                return -1;
                        }
                }
@@ -366,7 +366,7 @@ rte_vfio_setup_device(const char *sysfs_base, const char *dev_addr,
                RTE_LOG(WARNING, EAL, "Getting a vfio_dev_fd for %s failed\n",
                                dev_addr);
                close(vfio_group_fd);
-               clear_group(vfio_group_fd);
+               rte_vfio_clear_group(vfio_group_fd);
                return -1;
        }
 
@@ -378,7 +378,7 @@ rte_vfio_setup_device(const char *sysfs_base, const char *dev_addr,
                                strerror(errno));
                close(*vfio_dev_fd);
                close(vfio_group_fd);
-               clear_group(vfio_group_fd);
+               rte_vfio_clear_group(vfio_group_fd);
                return -1;
        }
        vfio_group_device_get(vfio_group_fd);
@@ -438,7 +438,7 @@ rte_vfio_release_device(const char *sysfs_base, const char *dev_addr,
                        return -1;
                }
 
-               if (clear_group(vfio_group_fd) < 0) {
+               if (rte_vfio_clear_group(vfio_group_fd) < 0) {
                        RTE_LOG(INFO, EAL, "Error when clearing group for %s\n",
                                           dev_addr);
                        return -1;
index b34d5d0..359589e 100644 (file)
@@ -148,10 +148,6 @@ vfio_get_group_no(const char *sysfs_base,
 int
 vfio_get_group_fd(int iommu_group_no);
 
-/* remove group fd from internal VFIO group fd array */
-int
-clear_group(int vfio_group_fd);
-
 int vfio_mp_sync_setup(void);
 
 #define SOCKET_REQ_CONTAINER 0x100
index 9b474dc..7cc3c15 100644 (file)
@@ -304,7 +304,7 @@ vfio_mp_sync_thread(void __rte_unused * arg)
                                continue;
                        }
 
-                       ret = clear_group(vfio_data);
+                       ret = rte_vfio_clear_group(vfio_data);
 
                        if (ret < 0)
                                vfio_mp_sync_send_request(conn_sock, SOCKET_NO_FD);
index 3fa1e13..7088b72 100644 (file)
@@ -205,6 +205,7 @@ DPDK_18.02 {
 
        rte_hypervisor_get;
        rte_hypervisor_get_name;
+       rte_vfio_clear_group;
 
 } DPDK_17.11;