On Wed, 19 Mar 2025 17:50:46 +0000
"Lombardo, Ed" <[email protected]> wrote:
> Hi,
> My goal is to test DPDK applications running on the same server as a primary
> process and secondary process.
> When I execute two dpdk-simple-mp processes, one as primary and other as
> secondary, I see them both startup with no issues.
>
> # ./dpdk-simple_mp -c 0x2 -n 4 --legacy-mem --proc-type primary --
> # ./dpdk-simple_mp -c 0x8 -n 4 --legacy-mem --proc-type secondary --
>
>
> Now when I test our DPDK application (as primary) and same dpdk-simple-mp (as
> secondary) I get error "EAL: Cannot initialize tailq: RTE_FIB).
> EAL args: MyApp, -l 25,26,27,28 -n 4 -socket-mem=2048, --legacy-mem
> -no-telemetry -proc_type=primary
>
> # ./dpdk-simple_mp -l 24 -n 4 --legacy-mem --proc-type secondary --
>
>
> When I use gdb I see that t->head is 0x0 in eal_common_tailqs.c Line 148.
> (gdb) p *t
> $40 = {head = 0x0, next = {tqe_next = 0x1c68c40 <rte_fib6_tailq>, tqe_prev =
> 0x1c67108 <rte_swx_ctl_pipeline_tailq+8>},
> name = "RTE_FIB", '\000' <repeats 24 times>}
>
> I created 2 - 1G hugepages per CPU socket for each test case listed above.
>
> [root@localhost ~]# /opt/dpdk/dpdk-hugepages.py -s
> Node Pages Size Total
> 0 2 1Gb 2Gb
> 1 2 1Gb 2Gb
>
>
> The dpdk-simple_mp execution output is shown below:
> [root@localhost ~]# ./dpdk-simple_mp -l 24 -n 4 --legacy-mem --huge-dir
> /dev/mnt/huge --proc-type secondary --
> EAL: Detected CPU lcores: 128
> EAL: Detected NUMA nodes: 2
> EAL: Static memory layout is selected, amount of reserved memory can be
> adjusted with -m or --socket-mem
> EAL: Detected static linkage of DPDK
> EAL: Multi-process socket /var/run/dpdk/rte/mp_socket_18349_8160ff395b1
> EAL: Selected IOVA mode 'PA'
> EAL: WARNING: Address Space Layout Randomization (ASLR) is enabled in the
> kernel.
> EAL: This may cause issues with mapping memory into secondary processes
> EAL: Cannot initialize tailq: RTE_FIB
> Tailq 0: qname:<RTE_DIST_BURST>, tqh_first:(nil), tqh_last:0x100004490
> Tailq 1: qname:<RTE_DISTRIBUTOR>, tqh_first:(nil), tqh_last:0x1000044c0
> Tailq 2: qname:<RTE_REORDER>, tqh_first:(nil), tqh_last:0x1000044f0
> Tailq 3: qname:<RTE_IPSEC_SAD>, tqh_first:(nil), tqh_last:0x100004520
> Tailq 4: qname:<RTE_SWX_IPSEC>, tqh_first:(nil), tqh_last:0x100004550
> Tailq 5: qname:<RTE_SWX_PIPELINE>, tqh_first:(nil), tqh_last:0x100004580
> Tailq 6: qname:<RTE_SWX_CTL_PIPELINE>, tqh_first:(nil), tqh_last:0x1000045b0
> Tailq 7: qname:<RTE_HASH>, tqh_first:0x1bfd9f140, tqh_last:0x1bf6f4240
> Tailq 8: qname:<RTE_FBK_HASH>, tqh_first:(nil), tqh_last:0x100004610
> Tailq 9: qname:<RTE_THASH>, tqh_first:(nil), tqh_last:0x100004640
> Tailq 10: qname:<RTE_LPM>, tqh_first:(nil), tqh_last:0x100004670
> Tailq 11: qname:<RTE_LPM6>, tqh_first:(nil), tqh_last:0x1000046a0
> Tailq 12: qname:<RTE_ACL>, tqh_first:(nil), tqh_last:0x1000046d0
> Tailq 13: qname:<RTE_MEMPOOL>, tqh_first:0x1bf282000, tqh_last:0x1bf282000
> Tailq 14: qname:<RTE_RING>, tqh_first:0x1bfdc79c0, tqh_last:0x14f261ac0
> Tailq 15: qname:<RTE_MBUF_DYNFIELD>, tqh_first:0x14f871680,
> tqh_last:0x14f870cc0
> Tailq 16: qname:<RTE_MBUF_DYNFLAG>, tqh_first:0x14f871080,
> tqh_last:0x14f871080
> Tailq 17: qname:<UIO_RESOURCE_LIST>, tqh_first:0x1bfffce00,
> tqh_last:0x1bf939e40
> Tailq 18: qname:<VFIO_RESOURCE_LIST>, tqh_first:(nil), tqh_last:0x1000047f0
> Tailq 19: qname:<>, tqh_first:(nil), tqh_last:(nil)
> Tailq 20: qname:<>, tqh_first:(nil), tqh_last:(nil)
> Tailq 21: qname:<>, tqh_first:(nil), tqh_last:(nil)
> Tailq 22: qname:<>, tqh_first:(nil), tqh_last:(nil)
> Tailq 23: qname:<>, tqh_first:(nil), tqh_last:(nil)
> Tailq 24: qname:<>, tqh_first:(nil), tqh_last:(nil)
> Tailq 25: qname:<>, tqh_first:(nil), tqh_last:(nil)
> Tailq 26: qname:<>, tqh_first:(nil), tqh_last:(nil)
> Tailq 27: qname:<>, tqh_first:(nil), tqh_last:(nil)
> Tailq 28: qname:<>, tqh_first:(nil), tqh_last:(nil)
> Tailq 29: qname:<>, tqh_first:(nil), tqh_last:(nil)
> Tailq 30: qname:<>, tqh_first:(nil), tqh_last:(nil)
> Tailq 31: qname:<>, tqh_first:(nil), tqh_last:(nil)
> EAL: Cannot init tail queues for objects
> EAL: Error - exiting with code: 1
> Cannot init EAL
>
> How do I resolve this issue?
>
> Thanks,
> Ed
The problem is that the primary process has not linked in the fib library.
The primary process is the only one that can register tailq's at initialization.