This will usually be an issue because of permissions.  However, it could
also be caused by OOM.  In either case, errno will contain the
underlying cause.  It is safe to re-init the system here, so allow the
application to take corrective action and reinit.

Signed-off-by: Aaron Conole <acon...@redhat.com>
Acked-by: Bruce Richardson <bruce.richard...@intel.com>
---
 lib/librte_eal/linuxapp/eal/eal.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/lib/librte_eal/linuxapp/eal/eal.c 
b/lib/librte_eal/linuxapp/eal/eal.c
index e1740a6..d5ef7b5 100644
--- a/lib/librte_eal/linuxapp/eal/eal.c
+++ b/lib/librte_eal/linuxapp/eal/eal.c
@@ -832,8 +832,12 @@ rte_eal_init(int argc, char **argv)
                return -1;
        }
 
-       if (rte_eal_pci_init() < 0)
-               rte_panic("Cannot init PCI\n");
+       if (rte_eal_pci_init() < 0) {
+               rte_eal_init_alert("Cannot init PCI\n");
+               rte_errno = EUNATCH;
+               rte_atomic32_clear(&run_once);
+               return -1;
+       }
 
 #ifdef VFIO_PRESENT
        if (rte_eal_vfio_setup() < 0)
-- 
2.9.3

Reply via email to