From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.mhcomputing.net (master.mhcomputing.net [74.208.46.186]) by dpdk.org (Postfix) with ESMTP id B037B212 for ; Tue, 14 Oct 2014 08:36:12 +0200 (CEST) Received: by mail.mhcomputing.net (Postfix, from userid 1000) id 1514780C50B; Mon, 13 Oct 2014 23:43:07 -0700 (PDT) Date: Mon, 13 Oct 2014 23:43:07 -0700 From: Matthew Hall To: dev@dpdk.org Message-ID: <20141014064306.GA17287@mhcomputing.net> References: <20141014054523.GA16919@mhcomputing.net> <20141014060353.GA17053@mhcomputing.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20141014060353.GA17053@mhcomputing.net> User-Agent: Mutt/1.5.23 (2014-03-12) Subject: Re: [dpdk-dev] virtio UIO / PMD issues in default Ubuntu Cloud Images X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Oct 2014 06:36:12 -0000 On Mon, Oct 13, 2014 at 11:03:53PM -0700, Matthew Hall wrote: > Another problem regarding virtio-net-pmd. When I tried using virtio-net-pmd, > it compiles fine but then hits a weird error also during EAL init process: > > EAL: open shared lib /vagrant/external/virtio-net-pmd/librte_pmd_virtio.so > EAL: /vagrant/external/virtio-net-pmd/librte_pmd_virtio.so: undefined symbol: per_lcore__lcore_id > > It doesn't seem to have a link dependency against any DPDK library that might > contain such a symbol, either: > > $ ldd librte_pmd_virtio.so > linux-vdso.so.1 => (0x00007fffd61fc000) > libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa2d971f000) > /lib64/ld-linux-x86-64.so.2 (0x00007fa2d9d00000) > > $ nm librte_pmd_virtio.so | fgrep -i lcore > U per_lcore__lcore_id > 00000000000014ee t rte_lcore_id > > man nm says this means: "U" The symbol is undefined. > > At present I am using the common setup, static DPDK w/ COMBINE_LIBS. The > directions don't state that a shared lib DPDK is required, and if it is > required, that increases complexity and reduces performance so it'd be better > not to be forced to require this unless there's a good reason. The PMD seems to load if DPDK is build w/ shared libraries: EAL: open shared lib /vagrant/external/virtio-net-pmd/librte_pmd_virtio.so librte_pmd_virtio version 1.2 Copyright 2013-2014 6WIND S.A. provided without warranty. However the documentation doesn't state that this is required... and requiring it is very irritating for developers. So I really hope we could just incorporate this PMD into the DPDK itself or fix whatever bugs make it not work with a static DPDK, or perhaps allow it to be build as a static lib and linked into one's app during compile so there's no need to load it as a plugin. At minimum the documentation should clearly state the precise steps needed to get this to work so it doesn't just blow up on the user with very weird series of errors as seen above. Matthew.