From mboxrd@z Thu Jan 1 00:00:00 1970 From: Aaron Conole Subject: Re: [PATCH v4 02/26] eal: return error instead of panic for cpu init Date: Mon, 27 Feb 2017 09:35:30 -0500 Message-ID: References: <20170209142953.8167-1-aconole@redhat.com> <20170225160309.31270-1-aconole@redhat.com> <20170225160309.31270-3-aconole@redhat.com> <20170227125852.GA127920@bricha3-MOBL3.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain Cc: dev@dpdk.org, Stephen Hemminger To: Bruce Richardson Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id 0B7D18DA2 for ; Mon, 27 Feb 2017 15:35:32 +0100 (CET) In-Reply-To: <20170227125852.GA127920@bricha3-MOBL3.ger.corp.intel.com> (Bruce Richardson's message of "Mon, 27 Feb 2017 12:58:52 +0000") List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Bruce Richardson writes: > On Sat, Feb 25, 2017 at 11:02:45AM -0500, Aaron Conole wrote: >> There may be no way to gracefully recover, but the application >> should be notified that a failure happened, rather than completely >> aborting. This allows the user to proceed with a "slow-path" type >> solution. >> >> Signed-off-by: Aaron Conole >> --- >> lib/librte_eal/linuxapp/eal/eal.c | 13 +++++++++++-- >> 1 file changed, 11 insertions(+), 2 deletions(-) >> >> diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c >> index bf6b818..5023d0d 100644 >> --- a/lib/librte_eal/linuxapp/eal/eal.c >> +++ b/lib/librte_eal/linuxapp/eal/eal.c >> @@ -740,6 +740,12 @@ static int rte_eal_vfio_setup(void) >> } >> #endif >> >> +static void rte_eal_init_alert(const char *msg) >> +{ >> + fprintf(stderr, "EAL: FATAL: %s\n", msg); >> + RTE_LOG(ERR, EAL, "%s\n", msg); >> +} >> + >> /* Launch threads, called at application init(). */ >> int >> rte_eal_init(int argc, char **argv) >> @@ -767,8 +773,11 @@ rte_eal_init(int argc, char **argv) >> /* set log level as early as possible */ >> rte_set_log_level(internal_config.log_level); >> >> - if (rte_eal_cpu_init() < 0) >> - rte_panic("Cannot detect lcores\n"); >> + if (rte_eal_cpu_init() < 0) { >> + rte_eal_init_alert("Cannot detect lcores."); >> + rte_errno = ENOTSUP; >> + return -1; >> + } >> >> fctret = eal_parse_args(argc, argv); >> if (fctret < 0) >> -- > eal.c needs to include rte_errno.h after this change, otherwise it won't > compile. oops.. I reordered some of my original work, and the rte_errno.h change was introduced too late. Thanks for catching this! > /Bruce