From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maxime Coquelin Subject: Re: [PATCH] eal: call plugin init before device parse Date: Fri, 13 Oct 2017 14:35:37 +0200 Message-ID: <5bc3a00c-2027-7b83-db34-719bdae051be@redhat.com> References: <20171013115501.1345-1-santosh.shukla@caviumnetworks.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Cc: thomas@monjalon.net, jerin.jacob@caviumnetworks.com To: Santosh Shukla , dev@dpdk.org Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id B8B211B6AD for ; Fri, 13 Oct 2017 14:35:42 +0200 (CEST) In-Reply-To: <20171013115501.1345-1-santosh.shukla@caviumnetworks.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 10/13/2017 01:55 PM, Santosh Shukla wrote: > Default eal_init code calls > 0. eal_plugins_init > 1. eal_option_device_parse > 2. rte_bus_scan > > IOVA commit:cf408c224 missed on calling eal_plugins_init before > eal_option_device_parse, rte_bus_scan and that introduced below > regression for shared mode: > > with CONFIG_RTE_BUILD_SHARED_LIB=y: > > 'net_vhost0,iface=/tmp/vhost-user2' -d ./install/lib/librte_pmd_vhost.so > -- --portmask=1 --disable-hw-vlan -i --rxq=1 --txq=1 --nb-cores=1 > --eth-peer=0,52:54:00:11:22:12 > EAL: Detected 4 lcore(s) > ERROR: failed to parse device "net_vhost0" > EAL: Unable to parse device 'net_vhost0,iface=/tmp/vhost-user2' > PANIC in main(): > Cannot init EAL > > Fixes: cf408c224 ("eal: auto detect IOVA mode") > > Reported-by: Maxime Coquelin > Signed-off-by: Santosh Shukla > --- > lib/librte_eal/bsdapp/eal/eal.c | 10 +++++++--- > lib/librte_eal/linuxapp/eal/eal.c | 10 +++++++--- > 2 files changed, 14 insertions(+), 6 deletions(-) Tested-by: Maxime Coquelin Thanks, Maxime > > diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c > index 30d3bd5b5..e981721aa 100644 > --- a/lib/librte_eal/bsdapp/eal/eal.c > +++ b/lib/librte_eal/bsdapp/eal/eal.c > @@ -551,6 +551,13 @@ rte_eal_init(int argc, char **argv) > return -1; > } > > + if (eal_plugins_init() < 0) { > + rte_eal_init_alert("Cannot init plugins\n"); > + rte_errno = EINVAL; > + rte_atomic32_clear(&run_once); > + return -1; > + } > + > if (eal_option_device_parse()) { > rte_errno = ENODEV; > rte_atomic32_clear(&run_once); > @@ -635,9 +642,6 @@ rte_eal_init(int argc, char **argv) > > eal_check_mem_on_local_socket(); > > - if (eal_plugins_init() < 0) > - rte_eal_init_alert("Cannot init plugins\n"); > - > eal_thread_init_master(rte_config.master_lcore); > > ret = eal_thread_dump_affinity(cpuset, RTE_CPU_AFFINITY_STR_LEN); > diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c > index ec37c52c0..ad7278989 100644 > --- a/lib/librte_eal/linuxapp/eal/eal.c > +++ b/lib/librte_eal/linuxapp/eal/eal.c > @@ -786,6 +786,13 @@ rte_eal_init(int argc, char **argv) > return -1; > } > > + if (eal_plugins_init() < 0) { > + rte_eal_init_alert("Cannot init plugins\n"); > + rte_errno = EINVAL; > + rte_atomic32_clear(&run_once); > + return -1; > + } > + > if (eal_option_device_parse()) { > rte_errno = ENODEV; > rte_atomic32_clear(&run_once); > @@ -882,9 +889,6 @@ rte_eal_init(int argc, char **argv) > > eal_check_mem_on_local_socket(); > > - if (eal_plugins_init() < 0) > - rte_eal_init_alert("Cannot init plugins\n"); > - > eal_thread_init_master(rte_config.master_lcore); > > ret = eal_thread_dump_affinity(cpuset, RTE_CPU_AFFINITY_STR_LEN); >