vfio: enable independently of PCI bus
[dpdk.git] / lib / librte_eal / linuxapp / eal / eal.c
index ec37c52..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) {
@@ -786,6 +790,13 @@ rte_eal_init(int argc, char **argv)
                return -1;
        }
 
+       if (eal_plugins_init() < 0) {
+               rte_eal_init_alert("Cannot init plugins\n");
+               rte_errno = EINVAL;
+               rte_atomic32_clear(&run_once);
+               return -1;
+       }
+
        if (eal_option_device_parse()) {
                rte_errno = ENODEV;
                rte_atomic32_clear(&run_once);
@@ -882,9 +893,6 @@ rte_eal_init(int argc, char **argv)
 
        eal_check_mem_on_local_socket();
 
-       if (eal_plugins_init() < 0)
-               rte_eal_init_alert("Cannot init plugins\n");
-
        eal_thread_init_master(rte_config.master_lcore);
 
        ret = eal_thread_dump_affinity(cpuset, RTE_CPU_AFFINITY_STR_LEN);