Hi, I've been trying to create a standalone application linked against DPDK, and I'm having some issues getting the program to run properly. The main problem is that in my standalone app compared to the example code, rte_eal_init() from the example code seems to probe the PCI bus, whereas mine doesn't. Here is a snippet from mine and an example:
mine: EAL: Virtual area found at 0x7f93ad000000 (size = 0x200000) EAL: Ask a virtual area of 0x3fc00000 bytes EAL: Virtual area found at 0x7f936d200000 (size = 0x3fc00000) EAL: Ask a virtual area of 0x200000 bytes EAL: Virtual area found at 0x7f936ce00000 (size = 0x200000) EAL: Requesting 512 pages of size 2MB from socket 0 EAL: Requesting 512 pages of size 2MB from socket 1 EAL: TSC frequency is ~2500000 KHz EAL: Master lcore 0 is ready (tid=ef4e6940;cpuset=[0]) EAL: lcore 6 is ready (tid=699ed700;cpuset=[6]) EAL: lcore 7 is ready (tid=691ec700;cpuset=[7]) EAL: lcore 4 is ready (tid=6a9ef700;cpuset=[4]) EAL: lcore 1 is ready (tid=6c1f2700;cpuset=[1]) EAL: lcore 2 is ready (tid=6b9f1700;cpuset=[2]) EAL: lcore 3 is ready (tid=6b1f0700;cpuset=[3]) EAL: lcore 5 is ready (tid=6a1ee700;cpuset=[5]) example: EAL: Requesting 512 pages of size 2MB from socket 1 EAL: TSC frequency is ~2500000 KHz EAL: Master lcore 0 is ready (tid=3019a900;cpuset=[0]) EAL: lcore 6 is ready (tid=aabed700;cpuset=[6]) EAL: lcore 5 is ready (tid=ab3ee700;cpuset=[5]) EAL: lcore 7 is ready (tid=aa3ec700;cpuset=[7]) EAL: lcore 1 is ready (tid=ad3f2700;cpuset=[1]) EAL: lcore 3 is ready (tid=ac3f0700;cpuset=[3]) EAL: lcore 2 is ready (tid=acbf1700;cpuset=[2]) EAL: lcore 4 is ready (tid=abbef700;cpuset=[4]) EAL: PCI device 0000:04:00.0 on NUMA socket 0 EAL: probe driver: 8086:1572 rte_i40e_pmd EAL: Not managed by a supported kernel driver, skipped EAL: PCI device 0000:04:00.1 on NUMA socket 0 EAL: probe driver: 8086:1572 rte_i40e_pmd EAL: Not managed by a supported kernel driver, skipped EAL: PCI device 0000:04:00.2 on NUMA socket 0 ... I even went so far as to port the dpdk part of my C++ code to C, then compile it into a standalone executable with the Makefile copied from an example. Sure enough, this worked and the PCI bus was scanned. However, when I then tried compiling the dpdk part of my app into a library and linking against it from my main program, the PCI scanning goes away and no devices are found. I can't really use the DPDK makefiles easily for my entire program since I'm using automake. Has anyone had this issue?
