From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 55457A0471 for ; Tue, 16 Jul 2019 10:46:13 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7EDF23423; Tue, 16 Jul 2019 10:46:11 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 1F1192BF4; Tue, 16 Jul 2019 10:46:09 +0200 (CEST) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Jul 2019 01:46:08 -0700 X-IronPort-AV: E=Sophos;i="5.63,497,1557212400"; d="scan'208";a="318930368" Received: from bricha3-mobl.ger.corp.intel.com ([10.252.1.207]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Jul 2019 01:46:07 -0700 Date: Tue, 16 Jul 2019 09:46:04 +0100 From: Bruce Richardson To: Stephen Hemminger Cc: thomas@monjalon.net, dev@dpdk.org, stable@dpdk.org Message-ID: <20190716084423.GB561@bricha3-MOBL.ger.corp.intel.com> References: <20190715234136.3526-1-stephen@networkplumber.org> <20190715171912.7c179f43@hermes.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190715171912.7c179f43@hermes.lan> User-Agent: Mutt/1.11.4 (2019-03-13) Subject: Re: [dpdk-dev] [PATCH] pci: fix missing pci bus with shared library build X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list 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 Mon, Jul 15, 2019 at 05:19:12PM -0700, Stephen Hemminger wrote: > On Mon, 15 Jul 2019 16:41:36 -0700 > Stephen Hemminger wrote: > > > If DPDK is built as a shared library, then any application linked > > with rte.app.mk will not find any PCI devices. When the application > > is started no ethernet devices are found. > > > > This is because the link order of libraries on the command line matters. > > And PCI is before EAL. That causes there to be no dependency on PCI > > so linker ignores linking the library. > > Swapping the order fixes this. > > > > Fixes: c752998b5e2e ("pci: introduce library and driver") > > Cc: stable@dpdk.org > > Signed-off-by: Stephen Hemminger > > --- > > mk/rte.app.mk | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/mk/rte.app.mk b/mk/rte.app.mk > > index a277c808ed8e..470b92e4d73e 100644 > > --- a/mk/rte.app.mk > > +++ b/mk/rte.app.mk > > @@ -90,8 +90,8 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_STACK) += -lrte_stack > > _LDLIBS-$(CONFIG_RTE_DRIVER_MEMPOOL_RING) += -lrte_mempool_ring > > _LDLIBS-$(CONFIG_RTE_LIBRTE_OCTEONTX2_MEMPOOL) += -lrte_mempool_octeontx2 > > _LDLIBS-$(CONFIG_RTE_LIBRTE_RING) += -lrte_ring > > -_LDLIBS-$(CONFIG_RTE_LIBRTE_PCI) += -lrte_pci > > _LDLIBS-$(CONFIG_RTE_LIBRTE_EAL) += -lrte_eal > > +_LDLIBS-$(CONFIG_RTE_LIBRTE_PCI) += -lrte_pci > > _LDLIBS-$(CONFIG_RTE_LIBRTE_CMDLINE) += -lrte_cmdline > > _LDLIBS-$(CONFIG_RTE_LIBRTE_REORDER) += -lrte_reorder > > _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrte_sched > > It still happens with 19.08. Testpmd works but only because it is > linked with so many things. But l3fwd fails... > > # ./examples/l3fwd/build/l3fwd -n4 -l0-3 -w 02:00.0 > EAL: Detected 8 lcore(s) > EAL: Detected 1 NUMA nodes > EAL: failed to parse device "02:00.0" > EAL: Unable to parse device '02:00.0' > EAL: Error - exiting with code: 1 > Cause: Invalid EAL parameters I don't think the position of these is going to be the cause here, the more likely cause is that the pci bus driver - and all other drivers - are not linked into apps for shared library builds. You always need to pass "-d" parameter to load drivers at init time (or have them installed in the correct driver path). For example, for me with a shared library build the following gives a no ports error: sudo ./build/l2fwd -c F00000 -- -p 3 while this succeeds and runs fine sudo ./build/l2fwd -c F00000 -d $RTE_SDK/$RTE_TARGET/lib/librte_pmd_i40e.so -- -p 3