[dpdk-dev] Debugging EAL PCI / Driver Init

Alex Markuze alex at weka.io
Sun Aug 3 13:41:51 CEST 2014


Resolved just as Matt has described.
To remove any ambiguity (for future reference).

This line in the gcc command resolves the issue in my case (a
different nic may need a different lib):
--whole-archive -Wl,--start-group -lrte_pmd_ixgbe -Wl,--end-group -Wl,

The problem is that the probe command polls over all pci devices and
tries to find a matching driver, these drivers register
With these macros which will only be called when the --whole-archive
option is provided and its actually the reason for this flags
existence. Without this flag the driver list is empty.

PMD_REGISTER_DRIVER(rte_ixgbe_driver);
PMD_REGISTER_DRIVER(rte_ixgbevf_driver);


On Sun, Aug 3, 2014 at 1:38 PM, Alex Markuze <alex at weka.io> wrote:
> Hi Matt, Dev
> I'm Trying to compile ann app linking to dpdk and dpdk based libs.
> And I'm seeing the same issue you've reported.
> The probe function doesn't seem to find any ixgbevf(SRIOV VM) ports.
> Same code compiled as a dpdk app works fine.
>
> In your solution to this issue you are referring to  -lintel_dpdk? I
> couldn't find any reference to it.
>
> Thanks
> Alex.
>
>
> On Sat, Aug 2, 2014 at 7:46 PM, Matthew Hall <mhall at mhcomputing.net> wrote:
>> On Sun, Aug 03, 2014 at 01:37:06AM +0900, Masaru Oki wrote:
>>> cc links library funtion from archive only if call from other object.
>>> but new dpdk pmd library has constractor section and not call directly.
>>> ld always links library funtion with constractor section.
>>> use -Xlinker, or use ld instead of cc.
>>
>> Hello Oki-san,
>>
>> The trick to fix it was this, I finally found it in the example Makefiles with
>> V=1 flag.
>>
>> -Wl,--whole-archive -Wl,--start-group -lintel_dpdk -Wl,--end-group -Wl,--no-whole-archive
>>
>> Thank you for the advice you provided, I couldn't have fixed it without your
>> suggestions... it got me to look more closely at the linking. Importantly,
>> "-Wl,--whole-archive" includes the entire archive whether or not it's called
>> from other objects, so we don't lose the constructors, just like you said.
>>
>> Matthew.


More information about the dev mailing list