From mboxrd@z Thu Jan 1 00:00:00 1970 From: Aaron Conole Subject: [PATCH v7 05/14] eal: do not panic on memzone initialization fails Date: Wed, 22 Mar 2017 16:19:31 -0400 Message-ID: <20170322201940.24028-6-aconole@redhat.com> References: <20170322201940.24028-1-aconole@redhat.com> Cc: Bruce Richardson , Thomas Monjalon , Stephen Hemminger To: dev@dpdk.org Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id 41C1411C5 for ; Wed, 22 Mar 2017 21:19:45 +0100 (CET) In-Reply-To: <20170322201940.24028-1-aconole@redhat.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" When memzone initialization fails, report the error to the calling application rather than panic(). Without a good way of detaching / releasing hugepages, at this point the application will have to restart. Signed-off-by: Aaron Conole --- lib/librte_eal/bsdapp/eal/eal.c | 7 +++++-- lib/librte_eal/linuxapp/eal/eal.c | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c index ab34c0d..a71566c 100644 --- a/lib/librte_eal/bsdapp/eal/eal.c +++ b/lib/librte_eal/bsdapp/eal/eal.c @@ -569,8 +569,11 @@ rte_eal_init(int argc, char **argv) if (rte_eal_memory_init() < 0) rte_panic("Cannot init memory\n"); - if (rte_eal_memzone_init() < 0) - rte_panic("Cannot init memzone\n"); + if (rte_eal_memzone_init() < 0) { + rte_eal_init_alert("Cannot init memzone\n"); + rte_errno = ENODEV; + return -1; + } if (rte_eal_tailqs_init() < 0) rte_panic("Cannot init tail queues for objects\n"); diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c index a671ed4..5a92b28 100644 --- a/lib/librte_eal/linuxapp/eal/eal.c +++ b/lib/librte_eal/linuxapp/eal/eal.c @@ -839,8 +839,11 @@ rte_eal_init(int argc, char **argv) /* the directories are locked during eal_hugepage_info_init */ eal_hugedirs_unlock(); - if (rte_eal_memzone_init() < 0) - rte_panic("Cannot init memzone\n"); + if (rte_eal_memzone_init() < 0) { + rte_eal_init_alert("Cannot init memzone\n"); + rte_errno = ENODEV; + return -1; + } if (rte_eal_tailqs_init() < 0) rte_panic("Cannot init tail queues for objects\n"); -- 2.9.3