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.

Reply via email to