dpdk ls1046

cancel
Showing results for 
Search instead for 
Did you mean: 

dpdk ls1046

Jump to solution
193 Views
Contributor I

We create multiple processes by leveraging dpdk. We initialize  the ports and queues in master core.In slave core, when call the function of dpaa_eth_queue_rx, (struct qman_fq *)(dev->data->rx_queues[1])->qp->config is NULL.

 

0 Kudos
1 Solution
146 Views
NXP Employee
NXP Employee

Multiprocess based packet I/O is not yet supported on DPAA1 devices with DPDK (LS1046 and LS1043). Please raise a support ticket. 

 

We suggest you to change your design to use multi-thread instead of multi-core on this device. 

View solution in original post

0 Kudos
4 Replies
147 Views
NXP Employee
NXP Employee

Multiprocess based packet I/O is not yet supported on DPAA1 devices with DPDK (LS1046 and LS1043). Please raise a support ticket. 

 

We suggest you to change your design to use multi-thread instead of multi-core on this device. 

View solution in original post

0 Kudos
163 Views
Contributor I

I don't have solved the problem. 

0 Kudos
187 Views
NXP TechSupport
NXP TechSupport

For all DPDK multiprocess use-cases, disable ASLR - Address Space Layout Randomization This is the default setting on various Linux distribution for preventing stack and other malicious address manipulation attacks. This works by randomizing the address-space layout of the ELF binary. This impact secondary process because the second or further process would attempt to find the same address space as the primary process (hugepage). This should be disabled using:
echo 0 > /proc/sys/kernel/randomize_va_space

0 Kudos
184 Views
Contributor I

I have disabled ASLR by using:echo 0 > /proc/sys/kernel/randomize_va_space, but it doesn't work.

LS1046A is a DPAA based platform. The version of dpdk is 20.08. Does the DPAA  support multiprocess?

In our project, we use multi-process of DPDK. The initialization process of primary process is as follows:

rte_eal_init-> rte_eth_dev_configure-> rte_eth_tx_queue_setup-> rte_eth_rx_queue_setup

The initialization process of secondary process is as follows: rte_eal_init. And the secondary process doesn’t execute the function of rte_eth_rx_queue_setup. When the secondary process calls the function of dpaa_eth_queue_rx. The struct qman_fq * fq->qp->config is NULL, the secondary process is down. The following result show the specific details.

#0 0x0000aaaaaae56af8 in qman_init_portal (portal=0xaaaaac826c00 <global_portals+2048>, c=0x0, cgrs=0x0) at /root/work/f-stack/dpdk/drivers/bus/dpaa/base/qbman/qman.c:531
531 p->addr.ce = c->addr_virt[DPAA_PORTAL_CE];
[Current thread is 1 (Thread 0xffffbf14e110 (LWP 10890))]
(gdb) bt
#0 0x0000aaaaaae56af8 in qman_init_portal (portal=0xaaaaac826c00 <global_portals+2048>, c=0x0, cgrs=0x0) at /root/work/f-stack/dpdk/drivers/bus/dpaa/base/qbman/qman.c:531
#1 0x0000aaaaaae5c7c4 in fsl_qman_fq_portal_init (qp=0xaaaaac826c00 <global_portals+2048>) at /root/work/f-stack/dpdk/drivers/bus/dpaa/base/qbman/qman_driver.c:205
#2 0x0000aaaaaae4cdc8 in rte_dpaa_portal_fq_init (arg=0x0, fq=0x100379e10) at /root/work/f-stack/dpdk/drivers/bus/dpaa/dpaa_bus.c:334
#3 0x0000aaaaab1acecc in dpaa_eth_queue_portal_rx (fq=0x100379e10, bufs=0xffffffffec98, nb_bufs=32) at /root/work/f-stack/dpdk/drivers/net/dpaa/dpaa_rxtx.c:584
#4 0x0000aaaaab1ad308 in dpaa_eth_queue_rx (q=0x100379e10, bufs=0xffffffffec98, nb_bufs=32) at /root/work/f-stack/dpdk/drivers/net/dpaa/dpaa_rxtx.c:671
#5 0x0000aaaaaae199ac in rte_eth_rx_burst (port_id=0, queue_id=1, rx_pkts=0xffffffffec98, nb_pkts=32) at /root/work/f-stack/dpdk/arm64-dpaa-linuxapp-gcc/include/rte_ethdev.h:4509
#6 0x0000aaaaaae25d14 in main_loop (arg=0x10023ffc0) at ff_dpdk_if.c:1631
#7 0x0000aaaaaaec32dc in rte_eal_mp_remote_launch (f=0xaaaaaae25a58 <main_loop>, arg=0x10023ffc0, call_master=CALL_MASTER) at /root/work/f-stack/dpdk/lib/librte_eal/common/eal_common_launch.c:64
#8 0x0000aaaaaae261f4 in ff_dpdk_run (loop=0xaaaaaac35e04 <ngx_worker_process_cycle_loop>, arg=0xaaaaace20050) at ff_dpdk_if.c:1716
#9 0x0000aaaaaae2709c in ff_run (loop=0xaaaaaac35e04 <ngx_worker_process_cycle_loop>, arg=0xaaaaace20050) at ff_init.c:61
#10 0x0000aaaaaac3602c in ngx_worker_process_cycle (cycle=0xaaaaace20050, data=0x1) at src/os/unix/ngx_process_cycle.c:955
#11 0x0000aaaaaac316c0 in ngx_spawn_process (cycle=0xaaaaace20050, proc=0xaaaaaac35fcc <ngx_worker_process_cycle>, data=0x1, name=0xaaaaac36feb0 "worker process", respawn=-3)
at src/os/unix/ngx_process.c:199
#12 0x0000aaaaaac34704 in ngx_start_worker_processes (cycle=0xaaaaace20050, n=4, type=-3) at src/os/unix/ngx_process_cycle.c:500
#13 0x0000aaaaaac33a28 in ngx_master_process_cycle (cycle=0xaaaaace20050) at src/os/unix/ngx_process_cycle.c:145
#14 0x0000aaaaaabe6574 in main (argc=1, argv=0xfffffffff498) at src/core/nginx.c:402

 

0 Kudos