From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <stable-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by inbox.dpdk.org (Postfix) with ESMTP id E2B8AA0471
	for <public@inbox.dpdk.org>; Fri, 19 Jul 2019 22:55:52 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id BC6FC5B34;
	Fri, 19 Jul 2019 22:55:52 +0200 (CEST)
Received: from mail-pf1-f195.google.com (mail-pf1-f195.google.com
 [209.85.210.195]) by dpdk.org (Postfix) with ESMTP id DB1225905
 for <stable@dpdk.org>; Fri, 19 Jul 2019 22:55:50 +0200 (CEST)
Received: by mail-pf1-f195.google.com with SMTP id b13so14682472pfo.1
 for <stable@dpdk.org>; Fri, 19 Jul 2019 13:55:50 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=networkplumber-org.20150623.gappssmtp.com; s=20150623;
 h=date:from:to:cc:subject:message-id:in-reply-to:references
 :mime-version:content-transfer-encoding;
 bh=HPKA7/I54UvQueWJWU3sjJuMBN8WsPzBQsIepLLX16o=;
 b=ytSi3dg9Bs6Rb6LN50Di2o4zeZJwnKxwmQwDXxlloNMcXPFKltvoOaRJbflNPsjyYI
 sqPJJmUGvt8PThhP7XSEnCyxvQdsImDqB1zSF6VVCMvgz2ILiwtNkyNGLOboJRwJtmIs
 PpnQX3nox/yRzRBXsF+AmAYhr4BHCeSSUcDmjwsySYb8hP5oVzaRwpkBsINtlfwem4Tt
 6fHUg6g8iraOfL07hvkR8tZePQFcFrO3OHJEVgSlmIuFvY8g7/d9OjvYzGp0VEqFq9z1
 sQ6X3SHm6tHUUhhJmQuq6usd8AZnzq8mC5le86efqXEqksFK7Jy3Q74YTwYosLX71qiJ
 jwcg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to
 :references:mime-version:content-transfer-encoding;
 bh=HPKA7/I54UvQueWJWU3sjJuMBN8WsPzBQsIepLLX16o=;
 b=IBrBnL3knqU+qoOKR4XMc3dVmwOTzHCKE1ZBZFFEty0wtYbBICT7WdMCATswAdAcAl
 b8VE6zB3YxXeXCVjBgmSHgwN8XUdkvYiUMRqGJj4hBtADtqoT2SkjB/oSzIVxM0tqk8l
 BBhSHPkj5LhH4F/A3xREv0etXpVp46Edb5SnfDOGGRoFbj7w0Qlyz/Xo/PKRYHiWJ4yh
 QYcW6OMKIcLfT8Jl99DkbBpEtD1zCqKiw1mwUdNFWKJppXxRI+pLHzt1r89b5UrWjWm4
 dKM4zc/T3GXbuNlKDRJmpCecWVDwxxExEIQCbwTSLEylJK538M/i5I1yWbaKomhuSfpt
 EnIQ==
X-Gm-Message-State: APjAAAVnMHVfrku5Z1hIawk1AAoZ3FBbehDwtYn2UGqO7sUT8CDPEkDz
 jm0ly1HhXCyI+wjo/zs71Ec=
X-Google-Smtp-Source: APXvYqyTfaYzDGtYK+sEDMTazJWQsRRV3a/5z6Ebq0drRJz771cGLW6oihJ3zaI3dD6YTf+rsI7uHA==
X-Received: by 2002:a63:2264:: with SMTP id t36mr51553316pgm.87.1563569746783; 
 Fri, 19 Jul 2019 13:55:46 -0700 (PDT)
Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127])
 by smtp.gmail.com with ESMTPSA id b190sm17584670pga.37.2019.07.19.13.55.46
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Fri, 19 Jul 2019 13:55:46 -0700 (PDT)
Date: Fri, 19 Jul 2019 13:55:40 -0700
From: Stephen Hemminger <stephen@networkplumber.org>
To: Bruce Richardson <bruce.richardson@intel.com>
Cc: thomas@monjalon.net, dev@dpdk.org, stable@dpdk.org
Message-ID: <20190719135540.7d889722@hermes.lan>
In-Reply-To: <20190716084423.GB561@bricha3-MOBL.ger.corp.intel.com>
References: <20190715234136.3526-1-stephen@networkplumber.org>
 <20190715171912.7c179f43@hermes.lan>
 <20190716084423.GB561@bricha3-MOBL.ger.corp.intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Subject: Re: [dpdk-stable] [dpdk-dev] [PATCH] pci: fix missing pci bus with
 shared library build
X-BeenThere: stable@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches for DPDK stable branches <stable.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/stable>,
 <mailto:stable-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/stable/>
List-Post: <mailto:stable@dpdk.org>
List-Help: <mailto:stable-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/stable>,
 <mailto:stable-request@dpdk.org?subject=subscribe>
Errors-To: stable-bounces@dpdk.org
Sender: "stable" <stable-bounces@dpdk.org>

On Tue, 16 Jul 2019 09:46:04 +0100
Bruce Richardson <bruce.richardson@intel.com> wrote:

> On Mon, Jul 15, 2019 at 05:19:12PM -0700, Stephen Hemminger wrote:
> > On Mon, 15 Jul 2019 16:41:36 -0700
> > Stephen Hemminger <stephen@networkplumber.org> 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 <stephen@networkplumber.org>
> > > ---
> > >  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

The root cause is that recent gcc won't run constructor on unused libraries.
Testing a patch to take --as-needed off of PCI library.

See: https://stackoverflow.com/questions/11631161/force-to-link-against-unused-shared-library