[dpdk-users] DPDK 16.04 link changes cause PMD drivers to not be loaded

Aurojit Panda apanda at cs.berkeley.edu
Wed Apr 20 16:26:05 CEST 2016

I am sorry that is a bit unintuitive considering:

(a) This behavior differs between static and shared builds of DPDK.
     - In fact this behavior was identical in 2.2, and even in mainline before 948fd64befc3726 went in.
(b) You already know the EAL_PMD_PATH at build time, and it makes it quite hard to ship scripts or anything to build 
DPDK, since now the configuration file becomes dependent on location.

I wonder if you would consider changing this, as it stands just building DPDK after setting CONFIG_RTE_SHARED_LIB=y 
results in a testpmd that cannot run.



Panu Matilainen wrote:
> On 04/19/2016 04:42 AM, Aurojit Panda wrote:
>> Hi
>> I was trying to run testpmd from DPDK 16.04 on Linux with kernel version
>> 4.4.0-1 (ld version 2.26). My machine has two
>> XL710QDA2 NICs, and I built DPDK as a shared, combined library (i.e.,
>> CONFIG_RTE_BUILD_COMBINE_LIBS=y in config/common_linuxapp). I found that
>> the issue is due to ld not linking against all
>> libraries with the new linker script (introduced in 948fd64befc3726) but
>> am not sure how to fix this. As evidence for
>> this being caused by this change:
> [...]
>> As you can see librte_pmd_i40e.so is missing from the list of files.
>> Furthermore, using
>> $ LD_PRELOAD="../lib/librte_pmd_i40e.so" ./testpmd -c 0x1c00 -n 4 -w
>> 82:00.0 -w 82:00.1 --file-prefix "send" -- -i
>> correctly enumerates the NICs.
>> I unfortunately do not how to fix the linker script as checked in, but
>> wanted to report this bug in case someone has a fix.
> The PMDs are plugins which are not really supposed to be linked in but loaded dynamically. Set CONFIG_RTE_EAL_PMD_PATH
> to the location of your drivers and they'll get loaded on DPDK initialization.
> - Panu -

More information about the users mailing list