eal: do not panic on bus probe/scan failure
authorAaron Conole <aconole@redhat.com>
Wed, 22 Mar 2017 20:19:39 +0000 (16:19 -0400)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Mon, 27 Mar 2017 13:59:06 +0000 (15:59 +0200)
For now, exit the init.  It's likely that even aborting the initialization
is premature in this case, as it may be possible to proceed even if one
bus or another is not available.

Signed-off-by: Aaron Conole <aconole@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
lib/librte_eal/bsdapp/eal/eal.c
lib/librte_eal/linuxapp/eal/eal.c

index debecaa..4ee9c66 100644 (file)
@@ -624,8 +624,11 @@ rte_eal_init(int argc, char **argv)
                rte_config.master_lcore, thread_id, cpuset,
                ret == 0 ? "" : "...");
 
-       if (rte_bus_scan())
-               rte_panic("Cannot scan the buses for devices\n");
+       if (rte_bus_scan()) {
+               rte_eal_init_alert("Cannot scan the buses for devices\n");
+               rte_errno = ENODEV;
+               return -1;
+       }
 
        RTE_LCORE_FOREACH_SLAVE(i) {
 
@@ -660,8 +663,11 @@ rte_eal_init(int argc, char **argv)
        rte_eal_mp_wait_lcore();
 
        /* Probe all the buses and devices/drivers on them */
-       if (rte_bus_probe())
-               rte_panic("Cannot probe devices\n");
+       if (rte_bus_probe()) {
+               rte_eal_init_alert("Cannot probe devices\n");
+               rte_errno = ENOTSUP;
+               return -1;
+       }
 
        /* Probe & Initialize PCI devices */
        if (rte_eal_pci_probe()) {
index 8abc1c6..f0ded18 100644 (file)
@@ -899,8 +899,11 @@ rte_eal_init(int argc, char **argv)
                return -1;
        }
 
-       if (rte_bus_scan())
-               rte_panic("Cannot scan the buses for devices\n");
+       if (rte_bus_scan()) {
+               rte_eal_init_alert("Cannot scan the buses for devices\n");
+               rte_errno = ENODEV;
+               return -1;
+       }
 
        RTE_LCORE_FOREACH_SLAVE(i) {
 
@@ -939,8 +942,11 @@ rte_eal_init(int argc, char **argv)
        rte_eal_mp_wait_lcore();
 
        /* Probe all the buses and devices/drivers on them */
-       if (rte_bus_probe())
-               rte_panic("Cannot probe devices\n");
+       if (rte_bus_probe()) {
+               rte_eal_init_alert("Cannot probe devices\n");
+               rte_errno = ENOTSUP;
+               return -1;
+       }
 
        /* Probe & Initialize PCI devices */
        if (rte_eal_pci_probe()) {