From 1908008f5d0cb6fea21849bcad506a8794a02d82 Mon Sep 17 00:00:00 2001 From: Aaron Conole Date: Wed, 22 Mar 2017 16:19:39 -0400 Subject: [PATCH] eal: do not panic on bus probe/scan failure 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 Acked-by: Bruce Richardson --- lib/librte_eal/bsdapp/eal/eal.c | 14 ++++++++++---- lib/librte_eal/linuxapp/eal/eal.c | 14 ++++++++++---- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c index debecaa847..4ee9c66fee 100644 --- a/lib/librte_eal/bsdapp/eal/eal.c +++ b/lib/librte_eal/bsdapp/eal/eal.c @@ -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()) { diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c index 8abc1c6b55..f0ded185b5 100644 --- a/lib/librte_eal/linuxapp/eal/eal.c +++ b/lib/librte_eal/linuxapp/eal/eal.c @@ -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()) { -- 2.20.1