vfio: enable independently of PCI bus
authorHemant Agrawal <hemant.agrawal@nxp.com>
Wed, 11 Oct 2017 06:42:18 +0000 (12:12 +0530)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 23 Oct 2017 22:32:20 +0000 (00:32 +0200)
VFIO may be used by buses other than PCI. This patch enables
the VFIO on the basis of vfio root presence.

Since vfio_enable should be called only once, pci_vfio_enable
is also removed.

A debug print is added in case vfio_pci module is not present.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
lib/librte_eal/linuxapp/eal/eal.c
lib/librte_eal/linuxapp/eal/eal_pci_vfio.c
lib/librte_eal/linuxapp/eal/eal_vfio.c
lib/librte_eal/linuxapp/eal/eal_vfio.h

index ad72789..02381d0 100644 (file)
@@ -710,9 +710,13 @@ static int rte_eal_vfio_setup(void)
 {
        int vfio_enabled = 0;
 
+       if (vfio_enable("vfio"))
+               return -1;
+       vfio_enabled = vfio_is_enabled("vfio");
+
        if (!internal_config.no_pci) {
-               pci_vfio_enable();
-               vfio_enabled |= pci_vfio_is_enabled();
+               if (!pci_vfio_is_enabled())
+                       RTE_LOG(DEBUG, EAL, "VFIO PCI modules not loaded\n");
        }
 
        if (vfio_enabled) {
index 10a75da..d407c87 100644 (file)
@@ -742,12 +742,6 @@ pci_vfio_ioport_unmap(struct rte_pci_ioport *p)
        return -1;
 }
 
-int
-pci_vfio_enable(void)
-{
-       return vfio_enable("vfio_pci");
-}
-
 int
 pci_vfio_is_enabled(void)
 {
index 9d66247..e0d37dc 100644 (file)
@@ -489,7 +489,7 @@ vfio_enable(const char *modname)
        /* inform the user that we are probing for VFIO */
        RTE_LOG(INFO, EAL, "Probing VFIO support...\n");
 
-       /* check if vfio-pci module is loaded */
+       /* check if vfio module is loaded */
        vfio_available = rte_eal_check_module(modname);
 
        /* return error directly */
index 26ea8e1..4bab363 100644 (file)
@@ -207,7 +207,6 @@ int vfio_release_device(const char *sysfs_base, const char *dev_addr, int fd);
 int vfio_enable(const char *modname);
 int vfio_is_enabled(const char *modname);
 
-int pci_vfio_enable(void);
 int pci_vfio_is_enabled(void);
 
 int vfio_mp_sync_setup(void);