DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] multi-process shared memory on PPC
@ 2017-08-31 14:40 Xueming(Steven) Li
  2017-09-12  7:46 ` Chao Zhu
  2017-09-12  8:01 ` Chao Zhu
  0 siblings, 2 replies; 7+ messages in thread
From: Xueming(Steven) Li @ 2017-08-31 14:40 UTC (permalink / raw)
  To: Chao Zhu; +Cc: dev

Hi all,

I'm testing multi-process example on PowerPC system, looks like shared memory not working properly.
Below are the error and debug info of the first multi-process example 'simple_mp' (works as expected on X86):

// Build DPDK, master branch
# make T=ppc_64-power8-linuxapp-gcc -j160 -C examples/multi_process/simple_mp/
# examples/multi_process/simple_mp/build/simple_mp  -w 0:0.0  --proc-type=primary -l 1-2 --socket-mem 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
APP: Finished Process Init.
Starting core 2
simple_mp > 

// Open another terminal and run secondary process
# gdb --args examples/multi_process/simple_mp/build/simple_mp -n 4 -w 0:0.0  --proc-type=secondary -l 3-4 --socket-mem 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "powerpc64le-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from examples/multi_process/simple_mp/build/simple_mp...done.
(gdb) r
Starting program: /home/xueming/mlnx-dpdk.org/examples/multi_process/simple_mp/build/simple_mp -n 4 -w 0:0.0 --proc-type=secondary -l 3-4 --socket-mem 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/powerpc64le-linux-gnu/libthread_db.so.1".
EAL: Detected 144 lcore(s)
EAL: Probing VFIO support...
[New Thread 0x7ffff7a6eff0 (LWP 58811)]
[New Thread 0x7ffff726eff0 (LWP 58812)]

Thread 1 "simple_mp" received signal SIGSEGV, Segmentation fault.
0x00007ffff7d2f3ec in ?? () from /lib/powerpc64le-linux-gnu/libc.so.6
 (gdb) bt full
#0  0x00007ffff7d2f3ec in ?? () from /lib/powerpc64le-linux-gnu/libc.so.6
No symbol table info available.
#1  0x0000000010077d54 in rte_ring_lookup (name=0x102a4e28 "PRI_2_SEC")
    at /home/xueming/mlnx-dpdk.org/lib/librte_ring/rte_ring.c:326
        te = 0x7ef3eefd5e00
        r = 0x0
        ring_list = 0x7ffff7aa250c
#2  0x0000000010032640 in main (argc=10, argv=0x7ffffffff3e8)
    at /home/xueming/mlnx-dpdk.org/examples/multi_process/simple_mp/main.c:128
        flags = 0
        ring_size = 64
        pool_size = 1024
        pool_cache = 32
        priv_data_sz = 0
        ret = 9
        lcore_id = 32767
        cl = 0x7ffff7fef718 <_dl_argv>
(gdb) f 1
#1  0x0000000010077d54 in rte_ring_lookup (name=0x102a4e28 "PRI_2_SEC")
    at /home/xueming/mlnx-dpdk.org/lib/librte_ring/rte_ring.c:326
326                     if (strncmp(name, r->name, RTE_RING_NAMESIZE) == 0)
(gdb) l
321
322             rte_rwlock_read_lock(RTE_EAL_TAILQ_RWLOCK);
323
324             TAILQ_FOREACH(te, ring_list, next) {
325                     r = (struct rte_ring *) te->data;
326                     if (strncmp(name, r->name, RTE_RING_NAMESIZE) == 0)
327                             break;
328             }
329
330             rte_rwlock_read_unlock(RTE_EAL_TAILQ_RWLOCK);
(gdb) p *te
$1 = {next = {tqe_next = 0x0, tqe_prev = 0x0}, data = 0x0}
(gdb) p *ring_list
$2 = {tqh_first = 0x7ef3eefd5e00, tqh_last = 0x7ef3eec6d100}

# uname -a
Linux dragon-power-01 4.13.0-rc2 #1 SMP Tue Aug 29 17:27:05 IDT 2017 ppc64le ppc64le ppc64le GNU/Linux

# cat /etc/issue
Ubuntu 16.04.2 LTS \n \l

# gcc --version
gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

# lscpu
Architecture:          ppc64le
Byte Order:            Little Endian
CPU(s):                144
On-line CPU(s) list:   0-87,96-103,112-159
Thread(s) per core:    8
Core(s) per socket:    4
Socket(s):             4
NUMA node(s):          4
Model:                 2.1 (pvr 004b 0201)
Model name:            POWER8E (raw), altivec supported
CPU max MHz:           3690.0000
CPU min MHz:           2061.0000
L1d cache:             64K
L1i cache:             32K
L2 cache:              512K
L3 cache:              8192K
NUMA node0 CPU(s):     0-39
NUMA node1 CPU(s):     40-79
NUMA node16 CPU(s):    80-87,96-103,112-119
NUMA node17 CPU(s):    120-159

# cat build/.config
# RTE_EXEC_ENV values are the directories in mk/exec-env/
CONFIG_RTE_EXEC_ENV="linuxapp"
# RTE_ARCH values are architecture we compile for. directories in mk/arch/
CONFIG_RTE_ARCH="ppc_64"
# machine can define specific variables or action for a specific board
# RTE_MACHINE values are architecture we compile for. directories in mk/machine/
CONFIG_RTE_MACHINE="power8"
# The compiler we use.
# RTE_TOOLCHAIN values are architecture we compile for. directories in mk/toolchain/
CONFIG_RTE_TOOLCHAIN="gcc"
# Use intrinsics or assembly code for key routines
CONFIG_RTE_FORCE_INTRINSICS=n
# Machine forces strict alignment constraints.
CONFIG_RTE_ARCH_STRICT_ALIGN=n
# Compile to share library
CONFIG_RTE_BUILD_SHARED_LIB=n
# Use newest code breaking previous ABI
CONFIG_RTE_NEXT_ABI=y
# Major ABI to overwrite library specific LIBABIVER
CONFIG_RTE_MAJOR_ABI=
# Machine's cache line size
CONFIG_RTE_CACHE_LINE_SIZE=128
# Compile Environment Abstraction Layer
CONFIG_RTE_LIBRTE_EAL=y
CONFIG_RTE_MAX_LCORE=256
CONFIG_RTE_MAX_NUMA_NODES=32
CONFIG_RTE_MAX_MEMSEG=256
CONFIG_RTE_MAX_MEMZONE=2560
CONFIG_RTE_MAX_TAILQ=32
CONFIG_RTE_LOG_LEVEL=RTE_LOG_INFO
CONFIG_RTE_LOG_DP_LEVEL=RTE_LOG_INFO
CONFIG_RTE_LOG_HISTORY=256
CONFIG_RTE_BACKTRACE=y
CONFIG_RTE_LIBEAL_USE_HPET=n
CONFIG_RTE_EAL_ALLOW_INV_SOCKET_ID=n
CONFIG_RTE_EAL_ALWAYS_PANIC_ON_ERROR=n
CONFIG_RTE_EAL_IGB_UIO=y
CONFIG_RTE_EAL_VFIO=y
CONFIG_RTE_MALLOC_DEBUG=n
CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=y
# Recognize/ignore architecture we compile for. AVX/AVX512 CPU flags for performance/power testing.
# AVX512 is marked as experimental for now, will enable it after enough
# field test and possible optimization.
CONFIG_RTE_ENABLE_AVX=y
CONFIG_RTE_ENABLE_AVX512=n
# Default driver path (or "" to disable)
CONFIG_RTE_EAL_PMD_PATH=""
# Compile Environment Abstraction Layer to support Vmware TSC map
CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=n
# Compile architecture we compile for. argument parser library
CONFIG_RTE_LIBRTE_KVARGS=y
# Compile generic ethernet library
CONFIG_RTE_LIBRTE_ETHER=y
CONFIG_RTE_LIBRTE_ETHDEV_DEBUG=n
CONFIG_RTE_MAX_ETHPORTS=32
CONFIG_RTE_MAX_QUEUES_PER_PORT=1024
CONFIG_RTE_LIBRTE_IEEE1588=n
CONFIG_RTE_ETHDEV_QUEUE_STAT_CNTRS=16
CONFIG_RTE_ETHDEV_RXTX_CALLBACKS=y
# Turn off Tx preparation stage
# Warning: rte_eth_tx_prepare() can be safely disabled only if using a
# driver which do not implement any Tx preparation.
CONFIG_RTE_ETHDEV_TX_PREPARE_NOOP=n
# Compile burst-oriented Amazon ENA PMD driver
CONFIG_RTE_LIBRTE_ENA_PMD=y
CONFIG_RTE_LIBRTE_ENA_DEBUG_RX=n
CONFIG_RTE_LIBRTE_ENA_DEBUG_TX=n
CONFIG_RTE_LIBRTE_ENA_DEBUG_TX_FREE=n
CONFIG_RTE_LIBRTE_ENA_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_ENA_COM_DEBUG=n
# Compile burst-oriented IGB & EM PMD drivers
CONFIG_RTE_LIBRTE_EM_PMD=y
CONFIG_RTE_LIBRTE_IGB_PMD=y
CONFIG_RTE_LIBRTE_E1000_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_E1000_DEBUG_RX=n
CONFIG_RTE_LIBRTE_E1000_DEBUG_TX=n
CONFIG_RTE_LIBRTE_E1000_DEBUG_TX_FREE=n
CONFIG_RTE_LIBRTE_E1000_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_E1000_PF_DISABLE_STRIP_CRC=n
# Compile burst-oriented IXGBE PMD driver
CONFIG_RTE_LIBRTE_IXGBE_PMD=n
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_RX=n
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX=n
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX_FREE=n
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_IXGBE_PF_DISABLE_STRIP_CRC=n
CONFIG_RTE_IXGBE_INC_VECTOR=y
CONFIG_RTE_LIBRTE_IXGBE_BYPASS=n
# Compile burst-oriented I40E PMD driver
CONFIG_RTE_LIBRTE_I40E_PMD=y
CONFIG_RTE_LIBRTE_I40E_DEBUG_RX=n
CONFIG_RTE_LIBRTE_I40E_DEBUG_TX=n
CONFIG_RTE_LIBRTE_I40E_DEBUG_TX_FREE=n
CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC=y
CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=y
CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n
CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF=64
CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VF=4
CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM=4
# interval up to 8160 us, aligned to 2 (or default value)
CONFIG_RTE_LIBRTE_I40E_ITR_INTERVAL=-1
# Compile burst-oriented FM10K PMD
CONFIG_RTE_LIBRTE_FM10K_PMD=n
CONFIG_RTE_LIBRTE_FM10K_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_FM10K_DEBUG_RX=n
CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX=n
CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX_FREE=n
CONFIG_RTE_LIBRTE_FM10K_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_FM10K_RX_OLFLAGS_ENABLE=y
CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=y
# Compile burst-oriented Mellanox ConnectX-3 (MLX4) PMD
CONFIG_RTE_LIBRTE_MLX4_PMD=n
CONFIG_RTE_LIBRTE_MLX4_DEBUG=n
CONFIG_RTE_LIBRTE_MLX4_DEBUG_BROKEN_VERBS=n
CONFIG_RTE_LIBRTE_MLX4_SGE_WR_N=4
CONFIG_RTE_LIBRTE_MLX4_MAX_INLINE=0
CONFIG_RTE_LIBRTE_MLX4_TX_MP_CACHE=8
CONFIG_RTE_LIBRTE_MLX4_SOFT_COUNTERS=1
# Compile burst-oriented Mellanox ConnectX-4 & ConnectX-5 (MLX5) PMD
CONFIG_RTE_LIBRTE_MLX5_PMD=y
CONFIG_RTE_LIBRTE_MLX5_DEBUG=n
CONFIG_RTE_LIBRTE_MLX5_TX_MP_CACHE=8
# Compile burst-oriented Broadcom PMD driver
CONFIG_RTE_LIBRTE_BNX2X_PMD=n
CONFIG_RTE_LIBRTE_BNX2X_DEBUG=n
CONFIG_RTE_LIBRTE_BNX2X_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_BNX2X_DEBUG_RX=n
CONFIG_RTE_LIBRTE_BNX2X_DEBUG_TX=n
CONFIG_RTE_LIBRTE_BNX2X_MF_SUPPORT=n
CONFIG_RTE_LIBRTE_BNX2X_DEBUG_PERIODIC=n
# Compile burst-oriented Chelsio Terminator (CXGBE) PMD
CONFIG_RTE_LIBRTE_CXGBE_PMD=y
CONFIG_RTE_LIBRTE_CXGBE_DEBUG=n
CONFIG_RTE_LIBRTE_CXGBE_DEBUG_REG=n
CONFIG_RTE_LIBRTE_CXGBE_DEBUG_MBOX=n
CONFIG_RTE_LIBRTE_CXGBE_DEBUG_TX=n
CONFIG_RTE_LIBRTE_CXGBE_DEBUG_RX=n
CONFIG_RTE_LIBRTE_CXGBE_TPUT=y
# Compile burst-oriented Cisco ENIC PMD driver
CONFIG_RTE_LIBRTE_ENIC_PMD=n
CONFIG_RTE_LIBRTE_ENIC_DEBUG=n
CONFIG_RTE_LIBRTE_ENIC_DEBUG_FLOW=n
# Compile burst-oriented Netronome NFP PMD driver
CONFIG_RTE_LIBRTE_NFP_PMD=y
CONFIG_RTE_LIBRTE_NFP_DEBUG=n
# Compile burst-oriented Broadcom BNXT PMD driver
CONFIG_RTE_LIBRTE_BNXT_PMD=y
# Compile burst-oriented Solarflare libefx-based PMD
CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n
CONFIG_RTE_LIBRTE_SFC_EFX_DEBUG=n
# Compile software PMD backed by SZEDATA2 device
CONFIG_RTE_LIBRTE_PMD_SZEDATA2=n
# Defines firmware type address space.
# See documentation for supported values.
# Other values raise compile time error.
CONFIG_RTE_LIBRTE_PMD_SZEDATA2_AS=0
# Compile burst-oriented Cavium Thunderx NICVF PMD driver
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD=y
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_RX=n
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_TX=n
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_MBOX=n
# Compile burst-oriented Cavium LiquidIO PMD driver
CONFIG_RTE_LIBRTE_LIO_PMD=y
CONFIG_RTE_LIBRTE_LIO_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_LIO_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_LIO_DEBUG_RX=n
CONFIG_RTE_LIBRTE_LIO_DEBUG_TX=n
CONFIG_RTE_LIBRTE_LIO_DEBUG_MBOX=n
CONFIG_RTE_LIBRTE_LIO_DEBUG_REGS=n
# Compile NXP DPAA2 FSL-MC Bus
CONFIG_RTE_LIBRTE_FSLMC_BUS=n
# Compile Support Libraries for NXP DPAA2
CONFIG_RTE_LIBRTE_DPAA2_MEMPOOL=n
CONFIG_RTE_LIBRTE_DPAA2_USE_PHYS_IOVA=y
# Compile burst-oriented NXP DPAA2 PMD driver
CONFIG_RTE_LIBRTE_DPAA2_PMD=n
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_RX=n
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX=n
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX_FREE=n
# Compile burst-oriented VIRTIO PMD driver
CONFIG_RTE_LIBRTE_VIRTIO_PMD=y
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_RX=n
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_TX=n
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DUMP=n
# Compile virtio device emulation inside virtio PMD driver
CONFIG_RTE_VIRTIO_USER=y
# Compile burst-oriented VMXNET3 PMD driver
CONFIG_RTE_LIBRTE_VMXNET3_PMD=n
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_RX=n
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX=n
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX_FREE=n
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_DRIVER=n
# Compile example software rings based PMD
CONFIG_RTE_LIBRTE_PMD_RING=y
CONFIG_RTE_PMD_RING_MAX_RX_RINGS=16
CONFIG_RTE_PMD_RING_MAX_TX_RINGS=16
# Compile software PMD backed by PCAP files
CONFIG_RTE_LIBRTE_PMD_PCAP=n
# Compile link bonding PMD library
CONFIG_RTE_LIBRTE_PMD_BOND=y
CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB=n
CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n
# QLogic 10G/25G/40G/50G/100G PMD
CONFIG_RTE_LIBRTE_QEDE_PMD=y
CONFIG_RTE_LIBRTE_QEDE_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_QEDE_DEBUG_INFO=n
CONFIG_RTE_LIBRTE_QEDE_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_QEDE_DEBUG_TX=n
CONFIG_RTE_LIBRTE_QEDE_DEBUG_RX=n
#Provides abs path/name of architecture we compile for. firmware file.
#Empty string denotes driver will use default firmware
CONFIG_RTE_LIBRTE_QEDE_FW=""
# Compile software PMD backed by AF_PACKET sockets (Linux only)
CONFIG_RTE_LIBRTE_PMD_AF_PACKET=y
# Compile ARK PMD
CONFIG_RTE_LIBRTE_ARK_PMD=y
CONFIG_RTE_LIBRTE_ARK_PAD_TX=y
CONFIG_RTE_LIBRTE_ARK_DEBUG_RX=n
CONFIG_RTE_LIBRTE_ARK_DEBUG_TX=n
CONFIG_RTE_LIBRTE_ARK_DEBUG_STATS=n
CONFIG_RTE_LIBRTE_ARK_DEBUG_TRACE=n
# Compile WRS accelerated virtual port (AVP) guest PMD driver
CONFIG_RTE_LIBRTE_AVP_PMD=n
CONFIG_RTE_LIBRTE_AVP_DEBUG_RX=n
CONFIG_RTE_LIBRTE_AVP_DEBUG_TX=n
CONFIG_RTE_LIBRTE_AVP_DEBUG_DRIVER=y
CONFIG_RTE_LIBRTE_AVP_DEBUG_BUFFERS=n
# Compile architecture we compile for. TAP PMD
# It is enabled by default for Linux only.
CONFIG_RTE_LIBRTE_PMD_TAP=y
# Compile Xen PMD
CONFIG_RTE_LIBRTE_PMD_XENVIRT=n
# Compile null PMD
CONFIG_RTE_LIBRTE_PMD_NULL=y
# Compile fail-safe PMD
CONFIG_RTE_LIBRTE_PMD_FAILSAFE=y
# Do prefetch of packet data within PMD driver receive function
CONFIG_RTE_PMD_PACKET_PREFETCH=y
# Compile generic crypto device library
CONFIG_RTE_LIBRTE_CRYPTODEV=y
CONFIG_RTE_LIBRTE_CRYPTODEV_DEBUG=n
CONFIG_RTE_CRYPTO_MAX_DEVS=64
CONFIG_RTE_CRYPTODEV_NAME_LEN=64
# Compile PMD for ARMv8 Crypto device
CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO=n
CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO_DEBUG=n
# Compile NXP DPAA2 crypto sec driver for CAAM HW
CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC=n
CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_RX=n
# Compile PMD for QuickAssist based devices
CONFIG_RTE_LIBRTE_PMD_QAT=n
CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_TX=n
CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_RX=n
CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_DRIVER=n
# Number of sessions to create in architecture we compile for. session memory pool
# on a single QuickAssist device.
CONFIG_RTE_QAT_PMD_MAX_NB_SESSIONS=2048
# Compile PMD for AESNI backed device
CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n
CONFIG_RTE_LIBRTE_PMD_AESNI_MB_DEBUG=n
# Compile PMD for Software backed device
CONFIG_RTE_LIBRTE_PMD_OPENSSL=n
CONFIG_RTE_LIBRTE_PMD_OPENSSL_DEBUG=n
# Compile PMD for AESNI GCM device
CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=n
CONFIG_RTE_LIBRTE_PMD_AESNI_GCM_DEBUG=n
# Compile PMD for SNOW 3G device
CONFIG_RTE_LIBRTE_PMD_SNOW3G=n
CONFIG_RTE_LIBRTE_PMD_SNOW3G_DEBUG=n
# Compile PMD for KASUMI device
CONFIG_RTE_LIBRTE_PMD_KASUMI=n
CONFIG_RTE_LIBRTE_PMD_KASUMI_DEBUG=n
# Compile PMD for ZUC device
CONFIG_RTE_LIBRTE_PMD_ZUC=n
CONFIG_RTE_LIBRTE_PMD_ZUC_DEBUG=n
# Compile PMD for Crypto Scheduler device
CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER=y
CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER_DEBUG=n
# Compile PMD for NULL Crypto device
CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO=y
# Compile generic event device library
CONFIG_RTE_LIBRTE_EVENTDEV=y
CONFIG_RTE_LIBRTE_EVENTDEV_DEBUG=n
CONFIG_RTE_EVENT_MAX_DEVS=16
CONFIG_RTE_EVENT_MAX_QUEUES_PER_DEV=64
# Compile PMD for skeleton event device
CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV=y
CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV_DEBUG=n
# Compile PMD for software event device
CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV=y
CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV_DEBUG=n
# Compile PMD for octeontx sso event device
CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF=y
CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF_DEBUG=n
# Compile librte_ring
CONFIG_RTE_LIBRTE_RING=y
# Compile librte_mempool
CONFIG_RTE_LIBRTE_MEMPOOL=y
CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512
CONFIG_RTE_LIBRTE_MEMPOOL_DEBUG=n
# Compile Mempool drivers
CONFIG_RTE_DRIVER_MEMPOOL_RING=y
CONFIG_RTE_DRIVER_MEMPOOL_STACK=y
# Compile librte_mbuf
CONFIG_RTE_LIBRTE_MBUF=y
CONFIG_RTE_LIBRTE_MBUF_DEBUG=n
CONFIG_RTE_MBUF_DEFAULT_MEMPOOL_OPS="ring_mp_mc"
CONFIG_RTE_MBUF_REFCNT_ATOMIC=y
CONFIG_RTE_PKTMBUF_HEADROOM=128
# Compile librte_timer
CONFIG_RTE_LIBRTE_TIMER=y
CONFIG_RTE_LIBRTE_TIMER_DEBUG=n
# Compile librte_cfgfile
CONFIG_RTE_LIBRTE_CFGFILE=y
# Compile librte_cmdline
CONFIG_RTE_LIBRTE_CMDLINE=y
CONFIG_RTE_LIBRTE_CMDLINE_DEBUG=n
# Compile librte_hash
CONFIG_RTE_LIBRTE_HASH=y
CONFIG_RTE_LIBRTE_HASH_DEBUG=n
# Compile librte_efd
CONFIG_RTE_LIBRTE_EFD=y
# Compile librte_jobstats
CONFIG_RTE_LIBRTE_JOBSTATS=y
# Compile architecture we compile for. device metrics library
CONFIG_RTE_LIBRTE_METRICS=y
# Compile architecture we compile for. bitrate statistics library
CONFIG_RTE_LIBRTE_BITRATE=y
# Compile architecture we compile for. latency statistics library
CONFIG_RTE_LIBRTE_LATENCY_STATS=y
# Compile librte_lpm
CONFIG_RTE_LIBRTE_LPM=y
CONFIG_RTE_LIBRTE_LPM_DEBUG=n
# Compile librte_acl
CONFIG_RTE_LIBRTE_ACL=y
CONFIG_RTE_LIBRTE_ACL_DEBUG=n
# Compile librte_power
CONFIG_RTE_LIBRTE_POWER=y
CONFIG_RTE_LIBRTE_POWER_DEBUG=n
CONFIG_RTE_MAX_LCORE_FREQS=64
# Compile librte_net
CONFIG_RTE_LIBRTE_NET=y
# Compile librte_ip_frag
CONFIG_RTE_LIBRTE_IP_FRAG=y
CONFIG_RTE_LIBRTE_IP_FRAG_DEBUG=n
CONFIG_RTE_LIBRTE_IP_FRAG_MAX_FRAG=4
CONFIG_RTE_LIBRTE_IP_FRAG_TBL_STAT=n
# Compile GRO library
CONFIG_RTE_LIBRTE_GRO=y
# Compile librte_meter
CONFIG_RTE_LIBRTE_METER=y
# Compile librte_sched
CONFIG_RTE_LIBRTE_SCHED=y
CONFIG_RTE_SCHED_DEBUG=n
CONFIG_RTE_SCHED_RED=n
CONFIG_RTE_SCHED_COLLECT_STATS=n
CONFIG_RTE_SCHED_SUBPORT_TC_OV=n
CONFIG_RTE_SCHED_PORT_N_GRINDERS=8
CONFIG_RTE_SCHED_VECTOR=n
# Compile architecture we compile for. distributor library
CONFIG_RTE_LIBRTE_DISTRIBUTOR=y
# Compile architecture we compile for. reorder library
CONFIG_RTE_LIBRTE_REORDER=y
# Compile librte_port
CONFIG_RTE_LIBRTE_PORT=y
CONFIG_RTE_PORT_STATS_COLLECT=n
CONFIG_RTE_PORT_PCAP=n
# Compile librte_table
CONFIG_RTE_LIBRTE_TABLE=y
CONFIG_RTE_TABLE_STATS_COLLECT=n
# Compile librte_pipeline
CONFIG_RTE_LIBRTE_PIPELINE=y
CONFIG_RTE_PIPELINE_STATS_COLLECT=n
# Compile librte_kni
CONFIG_RTE_LIBRTE_KNI=y
CONFIG_RTE_LIBRTE_PMD_KNI=y
CONFIG_RTE_KNI_KMOD=y
CONFIG_RTE_KNI_KMOD_ETHTOOL=n
CONFIG_RTE_KNI_PREEMPT_DEFAULT=y
# Compile architecture we compile for. pdump library
CONFIG_RTE_LIBRTE_PDUMP=y
# Compile vhost user library
CONFIG_RTE_LIBRTE_VHOST=y
CONFIG_RTE_LIBRTE_VHOST_NUMA=y
CONFIG_RTE_LIBRTE_VHOST_DEBUG=n
# Compile vhost PMD
# To compile, CONFIG_RTE_LIBRTE_VHOST should be enabled.
CONFIG_RTE_LIBRTE_PMD_VHOST=y
#Compile Xen domain0 support
CONFIG_RTE_LIBRTE_XEN_DOM0=n
# Compile architecture we compile for. test application
CONFIG_RTE_APP_TEST=y
CONFIG_RTE_APP_TEST_RESOURCE_TAR=n
# Compile architecture we compile for. PMD test application
CONFIG_RTE_TEST_PMD=y
CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES=n
CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS=n
# Compile architecture we compile for. crypto performance application
CONFIG_RTE_APP_CRYPTO_PERF=y
# Compile architecture we compile for. eventdev application
CONFIG_RTE_APP_EVENTDEV=y
CONFIG_RTE_EXEC_ENV_LINUXAPP=y
CONFIG_RTE_ARCH_PPC_64=y
CONFIG_RTE_ARCH_64=y
CONFIG_RTE_TOOLCHAIN_GCC=y
# Note: Power doesn't have this support
# Note: Initially, all of architecture we compile for. PMD drivers compilation are turned off on Power
# Will turn on them only after architecture we compile for. successful testing on Power

Please refer here for more information on running DPDK multi-process examples:
     http://dpdk.org/doc/guides/sample_app_ug/multi_process.html

Best Regards,
Xueming

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [dpdk-dev] multi-process shared memory on PPC
  2017-08-31 14:40 [dpdk-dev] multi-process shared memory on PPC Xueming(Steven) Li
@ 2017-09-12  7:46 ` Chao Zhu
  2017-09-12  7:54   ` Xueming(Steven) Li
  2017-09-12  8:01 ` Chao Zhu
  1 sibling, 1 reply; 7+ messages in thread
From: Chao Zhu @ 2017-09-12  7:46 UTC (permalink / raw)
  To: 'Xueming(Steven) Li'; +Cc: dev

Which version are you using?

> -----Original Message-----
> From: Xueming(Steven) Li [mailto:xuemingl@mellanox.com]
> Sent: 2017年8月31日 22:40
> To: Chao Zhu <chaozhu@linux.vnet.ibm.com>
> Cc: dev@dpdk.org
> Subject: multi-process shared memory on PPC
> 
> Hi all,
> 
> I'm testing multi-process example on PowerPC system, looks like shared
> memory not working properly.
> Below are the error and debug info of the first multi-process example
> 'simple_mp' (works as expected on X86):
> 
> // Build DPDK, master branch
> # make T=ppc_64-power8-linuxapp-gcc -j160 -C
> examples/multi_process/simple_mp/ #
> examples/multi_process/simple_mp/build/simple_mp  -w 0:0.0
> --proc-type=primary -l 1-2 --socket-mem
> 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
> APP: Finished Process Init.
> Starting core 2
> simple_mp >
> 
> // Open another terminal and run secondary process # gdb --args
> examples/multi_process/simple_mp/build/simple_mp -n 4 -w 0:0.0
> --proc-type=secondary -l 3-4 --socket-mem
> 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
> GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1 Copyright (C) 2016 Free
> Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later
> <https://urldefense.proofpoint.com/v2/url?u=http-3A__gnu.org_licenses_gpl.
h
> tml&d=DwIFAg&c=jf_iaSHvJObTbx-siA1ZOg&r=4TYe4NpqlgVi0ArYpZ76FrWp7IE
> w8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwuuryoN7QPg9N-6aTY_jEvDZtMZR0o&s
> =SbDQBN7qJ9z8fWCSePyvm5FFncp2P_9XZm-qs1lH5PE&e= > This is free
> software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "powerpc64le-linux-gnu".
> Type "show configuration" for configuration details.
> For bug reporting instructions, please see:
> <https://urldefense.proofpoint.com/v2/url?u=http-3A__www.gnu.org_softwar
> e_gdb_bugs_&d=DwIFAg&c=jf_iaSHvJObTbx-siA1ZOg&r=4TYe4NpqlgVi0ArYpZ
> 76FrWp7IEw8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwuuryoN7QPg9N-6aTY_jEvDZt
> MZR0o&s=GAFKK3jSahAPFXMGcPGbVNTl0CesJy_qfs5TxXfGOX0&e= >.
> Find the GDB manual and other documentation resources online at:
> <https://urldefense.proofpoint.com/v2/url?u=http-3A__www.gnu.org_softwar
> e_gdb_documentation_&d=DwIFAg&c=jf_iaSHvJObTbx-siA1ZOg&r=4TYe4Npql
> gVi0ArYpZ76FrWp7IEw8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwuuryoN7QPg9N-6a
> TY_jEvDZtMZR0o&s=JdkMMjGGl-3Z3BGnjCkOFP5lI5BIbRNBxH4EVI70YFc&e= >
> .
> For help, type "help".
> Type "apropos word" to search for commands related to "word"...
> Reading symbols from
> examples/multi_process/simple_mp/build/simple_mp...done.
> (gdb) r
> Starting program:
> /home/xueming/mlnx-dpdk.org/examples/multi_process/simple_mp/build/sim
> ple_mp -n 4 -w 0:0.0 --proc-type=secondary -l 3-4 --socket-mem
> 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
> [Thread debugging using libthread_db enabled] Using host libthread_db
library
> "/lib/powerpc64le-linux-gnu/libthread_db.so.1".
> EAL: Detected 144 lcore(s)
> EAL: Probing VFIO support...
> [New Thread 0x7ffff7a6eff0 (LWP 58811)]
> [New Thread 0x7ffff726eff0 (LWP 58812)]
> 
> Thread 1 "simple_mp" received signal SIGSEGV, Segmentation fault.
> 0x00007ffff7d2f3ec in ?? () from /lib/powerpc64le-linux-gnu/libc.so.6
>  (gdb) bt full
> #0  0x00007ffff7d2f3ec in ?? () from /lib/powerpc64le-linux-gnu/libc.so.6
> No symbol table info available.
> #1  0x0000000010077d54 in rte_ring_lookup (name=0x102a4e28
> "PRI_2_SEC")
>     at /home/xueming/mlnx-dpdk.org/lib/librte_ring/rte_ring.c:326
>         te = 0x7ef3eefd5e00
>         r = 0x0
>         ring_list = 0x7ffff7aa250c
> #2  0x0000000010032640 in main (argc=10, argv=0x7ffffffff3e8)
>     at
> /home/xueming/mlnx-dpdk.org/examples/multi_process/simple_mp/main.c:12
> 8
>         flags = 0
>         ring_size = 64
>         pool_size = 1024
>         pool_cache = 32
>         priv_data_sz = 0
>         ret = 9
>         lcore_id = 32767
>         cl = 0x7ffff7fef718 <_dl_argv>
> (gdb) f 1
> #1  0x0000000010077d54 in rte_ring_lookup (name=0x102a4e28
> "PRI_2_SEC")
>     at /home/xueming/mlnx-dpdk.org/lib/librte_ring/rte_ring.c:326
> 326                     if (strncmp(name, r->name,
> RTE_RING_NAMESIZE) == 0)
> (gdb) l
> 321
> 322             rte_rwlock_read_lock(RTE_EAL_TAILQ_RWLOCK);
> 323
> 324             TAILQ_FOREACH(te, ring_list, next) {
> 325                     r = (struct rte_ring *) te->data;
> 326                     if (strncmp(name, r->name,
> RTE_RING_NAMESIZE) == 0)
> 327                             break;
> 328             }
> 329
> 330             rte_rwlock_read_unlock(RTE_EAL_TAILQ_RWLOCK);
> (gdb) p *te
> $1 = {next = {tqe_next = 0x0, tqe_prev = 0x0}, data = 0x0}
> (gdb) p *ring_list
> $2 = {tqh_first = 0x7ef3eefd5e00, tqh_last = 0x7ef3eec6d100}
> 
> # uname -a
> Linux dragon-power-01 4.13.0-rc2 #1 SMP Tue Aug 29 17:27:05 IDT 2017
> ppc64le ppc64le ppc64le GNU/Linux
> 
> # cat /etc/issue
> Ubuntu 16.04.2 LTS \n \l
> 
> # gcc --version
> gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 Copyright (C) 2015
> Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.  There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
> PURPOSE.
> 
> # lscpu
> Architecture:          ppc64le
> Byte Order:            Little Endian
> CPU(s):                144
> On-line CPU(s) list:   0-87,96-103,112-159
> Thread(s) per core:    8
> Core(s) per socket:    4
> Socket(s):             4
> NUMA node(s):          4
> Model:                 2.1 (pvr 004b 0201)
> Model name:            POWER8E (raw), altivec supported
> CPU max MHz:           3690.0000
> CPU min MHz:           2061.0000
> L1d cache:             64K
> L1i cache:             32K
> L2 cache:              512K
> L3 cache:              8192K
> NUMA node0 CPU(s):     0-39
> NUMA node1 CPU(s):     40-79
> NUMA node16 CPU(s):    80-87,96-103,112-119
> NUMA node17 CPU(s):    120-159
> 
> # cat build/.config
> # RTE_EXEC_ENV values are the directories in mk/exec-env/
> CONFIG_RTE_EXEC_ENV="linuxapp"
> # RTE_ARCH values are architecture we compile for. directories in mk/arch/
> CONFIG_RTE_ARCH="ppc_64"
> # machine can define specific variables or action for a specific board #
> RTE_MACHINE values are architecture we compile for. directories in
> mk/machine/ CONFIG_RTE_MACHINE="power8"
> # The compiler we use.
> # RTE_TOOLCHAIN values are architecture we compile for. directories in
> mk/toolchain/ CONFIG_RTE_TOOLCHAIN="gcc"
> # Use intrinsics or assembly code for key routines
> CONFIG_RTE_FORCE_INTRINSICS=n # Machine forces strict alignment
> constraints.
> CONFIG_RTE_ARCH_STRICT_ALIGN=n
> # Compile to share library
> CONFIG_RTE_BUILD_SHARED_LIB=n
> # Use newest code breaking previous ABI
> CONFIG_RTE_NEXT_ABI=y
> # Major ABI to overwrite library specific LIBABIVER CONFIG_RTE_MAJOR_ABI=
> # Machine's cache line size
> CONFIG_RTE_CACHE_LINE_SIZE=128
> # Compile Environment Abstraction Layer
> CONFIG_RTE_LIBRTE_EAL=y
> CONFIG_RTE_MAX_LCORE=256
> CONFIG_RTE_MAX_NUMA_NODES=32
> CONFIG_RTE_MAX_MEMSEG=256
> CONFIG_RTE_MAX_MEMZONE=2560
> CONFIG_RTE_MAX_TAILQ=32
> CONFIG_RTE_LOG_LEVEL=RTE_LOG_INFO
> CONFIG_RTE_LOG_DP_LEVEL=RTE_LOG_INFO
> CONFIG_RTE_LOG_HISTORY=256
> CONFIG_RTE_BACKTRACE=y
> CONFIG_RTE_LIBEAL_USE_HPET=n
> CONFIG_RTE_EAL_ALLOW_INV_SOCKET_ID=n
> CONFIG_RTE_EAL_ALWAYS_PANIC_ON_ERROR=n
> CONFIG_RTE_EAL_IGB_UIO=y
> CONFIG_RTE_EAL_VFIO=y
> CONFIG_RTE_MALLOC_DEBUG=n
> CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=y
> # Recognize/ignore architecture we compile for. AVX/AVX512 CPU flags for
> performance/power testing.
> # AVX512 is marked as experimental for now, will enable it after enough #
field
> test and possible optimization.
> CONFIG_RTE_ENABLE_AVX=y
> CONFIG_RTE_ENABLE_AVX512=n
> # Default driver path (or "" to disable) CONFIG_RTE_EAL_PMD_PATH=""
> # Compile Environment Abstraction Layer to support Vmware TSC map
> CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=n
> # Compile architecture we compile for. argument parser library
> CONFIG_RTE_LIBRTE_KVARGS=y # Compile generic ethernet library
> CONFIG_RTE_LIBRTE_ETHER=y CONFIG_RTE_LIBRTE_ETHDEV_DEBUG=n
> CONFIG_RTE_MAX_ETHPORTS=32
> CONFIG_RTE_MAX_QUEUES_PER_PORT=1024
> CONFIG_RTE_LIBRTE_IEEE1588=n
> CONFIG_RTE_ETHDEV_QUEUE_STAT_CNTRS=16
> CONFIG_RTE_ETHDEV_RXTX_CALLBACKS=y
> # Turn off Tx preparation stage
> # Warning: rte_eth_tx_prepare() can be safely disabled only if using a #
driver
> which do not implement any Tx preparation.
> CONFIG_RTE_ETHDEV_TX_PREPARE_NOOP=n
> # Compile burst-oriented Amazon ENA PMD driver
> CONFIG_RTE_LIBRTE_ENA_PMD=y CONFIG_RTE_LIBRTE_ENA_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_ENA_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_ENA_DEBUG_TX_FREE=n
> CONFIG_RTE_LIBRTE_ENA_DEBUG_DRIVER=n
> CONFIG_RTE_LIBRTE_ENA_COM_DEBUG=n
> # Compile burst-oriented IGB & EM PMD drivers
> CONFIG_RTE_LIBRTE_EM_PMD=y CONFIG_RTE_LIBRTE_IGB_PMD=y
> CONFIG_RTE_LIBRTE_E1000_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_E1000_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_E1000_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_E1000_DEBUG_TX_FREE=n
> CONFIG_RTE_LIBRTE_E1000_DEBUG_DRIVER=n
> CONFIG_RTE_LIBRTE_E1000_PF_DISABLE_STRIP_CRC=n
> # Compile burst-oriented IXGBE PMD driver
> CONFIG_RTE_LIBRTE_IXGBE_PMD=n
> CONFIG_RTE_LIBRTE_IXGBE_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_IXGBE_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX_FREE=n
> CONFIG_RTE_LIBRTE_IXGBE_DEBUG_DRIVER=n
> CONFIG_RTE_LIBRTE_IXGBE_PF_DISABLE_STRIP_CRC=n
> CONFIG_RTE_IXGBE_INC_VECTOR=y
> CONFIG_RTE_LIBRTE_IXGBE_BYPASS=n
> # Compile burst-oriented I40E PMD driver CONFIG_RTE_LIBRTE_I40E_PMD=y
> CONFIG_RTE_LIBRTE_I40E_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_I40E_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_I40E_DEBUG_TX_FREE=n
> CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC=y
> CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=y
> CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n
> CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF=64
> CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VF=4
> CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM=4
> # interval up to 8160 us, aligned to 2 (or default value)
> CONFIG_RTE_LIBRTE_I40E_ITR_INTERVAL=-1
> # Compile burst-oriented FM10K PMD
> CONFIG_RTE_LIBRTE_FM10K_PMD=n
> CONFIG_RTE_LIBRTE_FM10K_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_FM10K_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX_FREE=n
> CONFIG_RTE_LIBRTE_FM10K_DEBUG_DRIVER=n
> CONFIG_RTE_LIBRTE_FM10K_RX_OLFLAGS_ENABLE=y
> CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=y
> # Compile burst-oriented Mellanox ConnectX-3 (MLX4) PMD
> CONFIG_RTE_LIBRTE_MLX4_PMD=n CONFIG_RTE_LIBRTE_MLX4_DEBUG=n
> CONFIG_RTE_LIBRTE_MLX4_DEBUG_BROKEN_VERBS=n
> CONFIG_RTE_LIBRTE_MLX4_SGE_WR_N=4
> CONFIG_RTE_LIBRTE_MLX4_MAX_INLINE=0
> CONFIG_RTE_LIBRTE_MLX4_TX_MP_CACHE=8
> CONFIG_RTE_LIBRTE_MLX4_SOFT_COUNTERS=1
> # Compile burst-oriented Mellanox ConnectX-4 & ConnectX-5 (MLX5) PMD
> CONFIG_RTE_LIBRTE_MLX5_PMD=y CONFIG_RTE_LIBRTE_MLX5_DEBUG=n
> CONFIG_RTE_LIBRTE_MLX5_TX_MP_CACHE=8
> # Compile burst-oriented Broadcom PMD driver
> CONFIG_RTE_LIBRTE_BNX2X_PMD=n CONFIG_RTE_LIBRTE_BNX2X_DEBUG=n
> CONFIG_RTE_LIBRTE_BNX2X_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_BNX2X_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_BNX2X_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_BNX2X_MF_SUPPORT=n
> CONFIG_RTE_LIBRTE_BNX2X_DEBUG_PERIODIC=n
> # Compile burst-oriented Chelsio Terminator (CXGBE) PMD
> CONFIG_RTE_LIBRTE_CXGBE_PMD=y CONFIG_RTE_LIBRTE_CXGBE_DEBUG=n
> CONFIG_RTE_LIBRTE_CXGBE_DEBUG_REG=n
> CONFIG_RTE_LIBRTE_CXGBE_DEBUG_MBOX=n
> CONFIG_RTE_LIBRTE_CXGBE_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_CXGBE_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_CXGBE_TPUT=y
> # Compile burst-oriented Cisco ENIC PMD driver
> CONFIG_RTE_LIBRTE_ENIC_PMD=n CONFIG_RTE_LIBRTE_ENIC_DEBUG=n
> CONFIG_RTE_LIBRTE_ENIC_DEBUG_FLOW=n
> # Compile burst-oriented Netronome NFP PMD driver
> CONFIG_RTE_LIBRTE_NFP_PMD=y CONFIG_RTE_LIBRTE_NFP_DEBUG=n #
> Compile burst-oriented Broadcom BNXT PMD driver
> CONFIG_RTE_LIBRTE_BNXT_PMD=y # Compile burst-oriented Solarflare
> libefx-based PMD CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n
> CONFIG_RTE_LIBRTE_SFC_EFX_DEBUG=n # Compile software PMD backed by
> SZEDATA2 device CONFIG_RTE_LIBRTE_PMD_SZEDATA2=n # Defines firmware
> type address space.
> # See documentation for supported values.
> # Other values raise compile time error.
> CONFIG_RTE_LIBRTE_PMD_SZEDATA2_AS=0
> # Compile burst-oriented Cavium Thunderx NICVF PMD driver
> CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD=y
> CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_DRIVER=n
> CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_MBOX=n
> # Compile burst-oriented Cavium LiquidIO PMD driver
> CONFIG_RTE_LIBRTE_LIO_PMD=y
> CONFIG_RTE_LIBRTE_LIO_DEBUG_DRIVER=n
> CONFIG_RTE_LIBRTE_LIO_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_LIO_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_LIO_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_LIO_DEBUG_MBOX=n
> CONFIG_RTE_LIBRTE_LIO_DEBUG_REGS=n
> # Compile NXP DPAA2 FSL-MC Bus
> CONFIG_RTE_LIBRTE_FSLMC_BUS=n
> # Compile Support Libraries for NXP DPAA2
> CONFIG_RTE_LIBRTE_DPAA2_MEMPOOL=n
> CONFIG_RTE_LIBRTE_DPAA2_USE_PHYS_IOVA=y
> # Compile burst-oriented NXP DPAA2 PMD driver
> CONFIG_RTE_LIBRTE_DPAA2_PMD=n
> CONFIG_RTE_LIBRTE_DPAA2_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_DPAA2_DEBUG_DRIVER=n
> CONFIG_RTE_LIBRTE_DPAA2_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX_FREE=n
> # Compile burst-oriented VIRTIO PMD driver
> CONFIG_RTE_LIBRTE_VIRTIO_PMD=y
> CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DRIVER=n
> CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DUMP=n
> # Compile virtio device emulation inside virtio PMD driver
> CONFIG_RTE_VIRTIO_USER=y # Compile burst-oriented VMXNET3 PMD driver
> CONFIG_RTE_LIBRTE_VMXNET3_PMD=n
> CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX_FREE=n
> CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_DRIVER=n
> # Compile example software rings based PMD
> CONFIG_RTE_LIBRTE_PMD_RING=y
> CONFIG_RTE_PMD_RING_MAX_RX_RINGS=16
> CONFIG_RTE_PMD_RING_MAX_TX_RINGS=16
> # Compile software PMD backed by PCAP files
> CONFIG_RTE_LIBRTE_PMD_PCAP=n # Compile link bonding PMD library
> CONFIG_RTE_LIBRTE_PMD_BOND=y
> CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB=n
> CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n
> # QLogic 10G/25G/40G/50G/100G PMD
> CONFIG_RTE_LIBRTE_QEDE_PMD=y
> CONFIG_RTE_LIBRTE_QEDE_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_QEDE_DEBUG_INFO=n
> CONFIG_RTE_LIBRTE_QEDE_DEBUG_DRIVER=n
> CONFIG_RTE_LIBRTE_QEDE_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_QEDE_DEBUG_RX=n
> #Provides abs path/name of architecture we compile for. firmware file.
> #Empty string denotes driver will use default firmware
> CONFIG_RTE_LIBRTE_QEDE_FW=""
> # Compile software PMD backed by AF_PACKET sockets (Linux only)
> CONFIG_RTE_LIBRTE_PMD_AF_PACKET=y # Compile ARK PMD
> CONFIG_RTE_LIBRTE_ARK_PMD=y CONFIG_RTE_LIBRTE_ARK_PAD_TX=y
> CONFIG_RTE_LIBRTE_ARK_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_ARK_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_ARK_DEBUG_STATS=n
> CONFIG_RTE_LIBRTE_ARK_DEBUG_TRACE=n
> # Compile WRS accelerated virtual port (AVP) guest PMD driver
> CONFIG_RTE_LIBRTE_AVP_PMD=n CONFIG_RTE_LIBRTE_AVP_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_AVP_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_AVP_DEBUG_DRIVER=y
> CONFIG_RTE_LIBRTE_AVP_DEBUG_BUFFERS=n
> # Compile architecture we compile for. TAP PMD # It is enabled by default
for
> Linux only.
> CONFIG_RTE_LIBRTE_PMD_TAP=y
> # Compile Xen PMD
> CONFIG_RTE_LIBRTE_PMD_XENVIRT=n
> # Compile null PMD
> CONFIG_RTE_LIBRTE_PMD_NULL=y
> # Compile fail-safe PMD
> CONFIG_RTE_LIBRTE_PMD_FAILSAFE=y
> # Do prefetch of packet data within PMD driver receive function
> CONFIG_RTE_PMD_PACKET_PREFETCH=y # Compile generic crypto device
> library CONFIG_RTE_LIBRTE_CRYPTODEV=y
> CONFIG_RTE_LIBRTE_CRYPTODEV_DEBUG=n
> CONFIG_RTE_CRYPTO_MAX_DEVS=64
> CONFIG_RTE_CRYPTODEV_NAME_LEN=64
> # Compile PMD for ARMv8 Crypto device
> CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO=n
> CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO_DEBUG=n
> # Compile NXP DPAA2 crypto sec driver for CAAM HW
> CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC=n
> CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_DRIVER=n
> CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_RX=n
> # Compile PMD for QuickAssist based devices
> CONFIG_RTE_LIBRTE_PMD_QAT=n
> CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_DRIVER=n
> # Number of sessions to create in architecture we compile for. session
memory
> pool # on a single QuickAssist device.
> CONFIG_RTE_QAT_PMD_MAX_NB_SESSIONS=2048
> # Compile PMD for AESNI backed device
> CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n
> CONFIG_RTE_LIBRTE_PMD_AESNI_MB_DEBUG=n
> # Compile PMD for Software backed device
> CONFIG_RTE_LIBRTE_PMD_OPENSSL=n
> CONFIG_RTE_LIBRTE_PMD_OPENSSL_DEBUG=n
> # Compile PMD for AESNI GCM device
> CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=n
> CONFIG_RTE_LIBRTE_PMD_AESNI_GCM_DEBUG=n
> # Compile PMD for SNOW 3G device
> CONFIG_RTE_LIBRTE_PMD_SNOW3G=n
> CONFIG_RTE_LIBRTE_PMD_SNOW3G_DEBUG=n
> # Compile PMD for KASUMI device
> CONFIG_RTE_LIBRTE_PMD_KASUMI=n
> CONFIG_RTE_LIBRTE_PMD_KASUMI_DEBUG=n
> # Compile PMD for ZUC device
> CONFIG_RTE_LIBRTE_PMD_ZUC=n
> CONFIG_RTE_LIBRTE_PMD_ZUC_DEBUG=n
> # Compile PMD for Crypto Scheduler device
> CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER=y
> CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER_DEBUG=n
> # Compile PMD for NULL Crypto device
> CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO=y
> # Compile generic event device library
> CONFIG_RTE_LIBRTE_EVENTDEV=y
> CONFIG_RTE_LIBRTE_EVENTDEV_DEBUG=n
> CONFIG_RTE_EVENT_MAX_DEVS=16
> CONFIG_RTE_EVENT_MAX_QUEUES_PER_DEV=64
> # Compile PMD for skeleton event device
> CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV=y
> CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV_DEBUG=n
> # Compile PMD for software event device
> CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV=y
> CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV_DEBUG=n
> # Compile PMD for octeontx sso event device
> CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF=y
> CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF_DEBUG=n
> # Compile librte_ring
> CONFIG_RTE_LIBRTE_RING=y
> # Compile librte_mempool
> CONFIG_RTE_LIBRTE_MEMPOOL=y
> CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512
> CONFIG_RTE_LIBRTE_MEMPOOL_DEBUG=n
> # Compile Mempool drivers
> CONFIG_RTE_DRIVER_MEMPOOL_RING=y
> CONFIG_RTE_DRIVER_MEMPOOL_STACK=y
> # Compile librte_mbuf
> CONFIG_RTE_LIBRTE_MBUF=y
> CONFIG_RTE_LIBRTE_MBUF_DEBUG=n
> CONFIG_RTE_MBUF_DEFAULT_MEMPOOL_OPS="ring_mp_mc"
> CONFIG_RTE_MBUF_REFCNT_ATOMIC=y
> CONFIG_RTE_PKTMBUF_HEADROOM=128
> # Compile librte_timer
> CONFIG_RTE_LIBRTE_TIMER=y
> CONFIG_RTE_LIBRTE_TIMER_DEBUG=n
> # Compile librte_cfgfile
> CONFIG_RTE_LIBRTE_CFGFILE=y
> # Compile librte_cmdline
> CONFIG_RTE_LIBRTE_CMDLINE=y
> CONFIG_RTE_LIBRTE_CMDLINE_DEBUG=n
> # Compile librte_hash
> CONFIG_RTE_LIBRTE_HASH=y
> CONFIG_RTE_LIBRTE_HASH_DEBUG=n
> # Compile librte_efd
> CONFIG_RTE_LIBRTE_EFD=y
> # Compile librte_jobstats
> CONFIG_RTE_LIBRTE_JOBSTATS=y
> # Compile architecture we compile for. device metrics library
> CONFIG_RTE_LIBRTE_METRICS=y # Compile architecture we compile for.
> bitrate statistics library CONFIG_RTE_LIBRTE_BITRATE=y # Compile
> architecture we compile for. latency statistics library
> CONFIG_RTE_LIBRTE_LATENCY_STATS=y # Compile librte_lpm
> CONFIG_RTE_LIBRTE_LPM=y CONFIG_RTE_LIBRTE_LPM_DEBUG=n # Compile
> librte_acl CONFIG_RTE_LIBRTE_ACL=y CONFIG_RTE_LIBRTE_ACL_DEBUG=n #
> Compile librte_power CONFIG_RTE_LIBRTE_POWER=y
> CONFIG_RTE_LIBRTE_POWER_DEBUG=n
> CONFIG_RTE_MAX_LCORE_FREQS=64
> # Compile librte_net
> CONFIG_RTE_LIBRTE_NET=y
> # Compile librte_ip_frag
> CONFIG_RTE_LIBRTE_IP_FRAG=y
> CONFIG_RTE_LIBRTE_IP_FRAG_DEBUG=n
> CONFIG_RTE_LIBRTE_IP_FRAG_MAX_FRAG=4
> CONFIG_RTE_LIBRTE_IP_FRAG_TBL_STAT=n
> # Compile GRO library
> CONFIG_RTE_LIBRTE_GRO=y
> # Compile librte_meter
> CONFIG_RTE_LIBRTE_METER=y
> # Compile librte_sched
> CONFIG_RTE_LIBRTE_SCHED=y
> CONFIG_RTE_SCHED_DEBUG=n
> CONFIG_RTE_SCHED_RED=n
> CONFIG_RTE_SCHED_COLLECT_STATS=n
> CONFIG_RTE_SCHED_SUBPORT_TC_OV=n
> CONFIG_RTE_SCHED_PORT_N_GRINDERS=8
> CONFIG_RTE_SCHED_VECTOR=n
> # Compile architecture we compile for. distributor library
> CONFIG_RTE_LIBRTE_DISTRIBUTOR=y # Compile architecture we compile for.
> reorder library CONFIG_RTE_LIBRTE_REORDER=y # Compile librte_port
> CONFIG_RTE_LIBRTE_PORT=y CONFIG_RTE_PORT_STATS_COLLECT=n
> CONFIG_RTE_PORT_PCAP=n # Compile librte_table
> CONFIG_RTE_LIBRTE_TABLE=y CONFIG_RTE_TABLE_STATS_COLLECT=n #
> Compile librte_pipeline CONFIG_RTE_LIBRTE_PIPELINE=y
> CONFIG_RTE_PIPELINE_STATS_COLLECT=n
> # Compile librte_kni
> CONFIG_RTE_LIBRTE_KNI=y
> CONFIG_RTE_LIBRTE_PMD_KNI=y
> CONFIG_RTE_KNI_KMOD=y
> CONFIG_RTE_KNI_KMOD_ETHTOOL=n
> CONFIG_RTE_KNI_PREEMPT_DEFAULT=y
> # Compile architecture we compile for. pdump library
> CONFIG_RTE_LIBRTE_PDUMP=y # Compile vhost user library
> CONFIG_RTE_LIBRTE_VHOST=y CONFIG_RTE_LIBRTE_VHOST_NUMA=y
> CONFIG_RTE_LIBRTE_VHOST_DEBUG=n # Compile vhost PMD # To compile,
> CONFIG_RTE_LIBRTE_VHOST should be enabled.
> CONFIG_RTE_LIBRTE_PMD_VHOST=y
> #Compile Xen domain0 support
> CONFIG_RTE_LIBRTE_XEN_DOM0=n
> # Compile architecture we compile for. test application
> CONFIG_RTE_APP_TEST=y CONFIG_RTE_APP_TEST_RESOURCE_TAR=n
> # Compile architecture we compile for. PMD test application
> CONFIG_RTE_TEST_PMD=y
> CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES=n
> CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS=n
> # Compile architecture we compile for. crypto performance application
> CONFIG_RTE_APP_CRYPTO_PERF=y # Compile architecture we compile for.
> eventdev application CONFIG_RTE_APP_EVENTDEV=y
> CONFIG_RTE_EXEC_ENV_LINUXAPP=y CONFIG_RTE_ARCH_PPC_64=y
> CONFIG_RTE_ARCH_64=y CONFIG_RTE_TOOLCHAIN_GCC=y # Note: Power
> doesn't have this support # Note: Initially, all of architecture we
compile for.
> PMD drivers compilation are turned off on Power # Will turn on them only
after
> architecture we compile for. successful testing on Power
> 
> Please refer here for more information on running DPDK multi-process
> examples:
> 
> https://urldefense.proofpoint.com/v2/url?u=http-3A__dpdk.org_doc_guides_s
> ample-5Fapp-5Fug_multi-5Fprocess.html&d=DwIFAg&c=jf_iaSHvJObTbx-siA1Z
> Og&r=4TYe4NpqlgVi0ArYpZ76FrWp7IEw8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwu
> uryoN7QPg9N-6aTY_jEvDZtMZR0o&s=gupwe5WWQ-ap2jObFko6UJymrcy4jTmF
> 2r1dZ2fQN9E&e=
> 
> Best Regards,
> Xueming

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [dpdk-dev] multi-process shared memory on PPC
  2017-09-12  7:46 ` Chao Zhu
@ 2017-09-12  7:54   ` Xueming(Steven) Li
  0 siblings, 0 replies; 7+ messages in thread
From: Xueming(Steven) Li @ 2017-09-12  7:54 UTC (permalink / raw)
  To: Chao Zhu; +Cc: dev

Mater branch from GIT.

> -----Original Message-----
> From: Chao Zhu [mailto:chaozhu@linux.vnet.ibm.com]
> Sent: Tuesday, September 12, 2017 3:47 PM
> To: Xueming(Steven) Li <xuemingl@mellanox.com>
> Cc: dev@dpdk.org
> Subject: RE: multi-process shared memory on PPC
> 
> Which version are you using?
> 
> > -----Original Message-----
> > From: Xueming(Steven) Li [mailto:xuemingl@mellanox.com]
> > Sent: 2017年8月31日 22:40
> > To: Chao Zhu <chaozhu@linux.vnet.ibm.com>
> > Cc: dev@dpdk.org
> > Subject: multi-process shared memory on PPC
> >
> > Hi all,
> >
> > I'm testing multi-process example on PowerPC system, looks like shared
> > memory not working properly.
> > Below are the error and debug info of the first multi-process example
> > 'simple_mp' (works as expected on X86):
> >
> > // Build DPDK, master branch
> > # make T=ppc_64-power8-linuxapp-gcc -j160 -C
> > examples/multi_process/simple_mp/ #
> > examples/multi_process/simple_mp/build/simple_mp  -w 0:0.0
> > --proc-type=primary -l 1-2 --socket-mem
> > 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
> > APP: Finished Process Init.
> > Starting core 2
> > simple_mp >
> >
> > // Open another terminal and run secondary process # gdb --args
> > examples/multi_process/simple_mp/build/simple_mp -n 4 -w 0:0.0
> > --proc-type=secondary -l 3-4 --socket-mem
> > 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
> > GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1 Copyright (C) 2016 Free
> > Software Foundation, Inc.
> > License GPLv3+: GNU GPL version 3 or later
> >
> <https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Furldef
> ense.proofpoint.com%2Fv2%2Furl%3Fu%3Dhttp-
> 3A__gnu.org_licenses_gpl&data=02%7C01%7Cxuemingl%40mellanox.com%7C
> 28928b49921642d1062a08d4f9b2a39d%7Ca652971c7d2e4d9ba6a4d149256f46
> 1b%7C0%7C0%7C636407993035002193&sdata=KNxpjaC%2FW0TXQxxr1rS%2B
> 81UOKkC3Wz8NiOi2p3Nidbo%3D&reserved=0.
> h
> > tml&d=DwIFAg&c=jf_iaSHvJObTbx-
> siA1ZOg&r=4TYe4NpqlgVi0ArYpZ76FrWp7IE
> > w8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwuuryoN7QPg9N-6aTY_jEvDZtMZR0o&s
> > =SbDQBN7qJ9z8fWCSePyvm5FFncp2P_9XZm-qs1lH5PE&e= > This is free
> > software: you are free to change and redistribute it.
> > There is NO WARRANTY, to the extent permitted by law.  Type "show
> copying"
> > and "show warranty" for details.
> > This GDB was configured as "powerpc64le-linux-gnu".
> > Type "show configuration" for configuration details.
> > For bug reporting instructions, please see:
> > <https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fur
> > ldefense.proofpoint.com%2Fv2%2Furl%3Fu%3Dhttp-
> 3A__www.gnu.org_softwar&
> >
> data=02%7C01%7Cxuemingl%40mellanox.com%7C28928b49921642d1062a08d
> 4f9b2a
> >
> 39d%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C63640799303500
> 2193&sd
> >
> ata=UWQCUuBC%2ByrBwUFuwlMHXVHE0Dyp6jujtrpPC%2BD8Is8%3D&reserve
> d=0
> > e_gdb_bugs_&d=DwIFAg&c=jf_iaSHvJObTbx-
> siA1ZOg&r=4TYe4NpqlgVi0ArYpZ
> > 76FrWp7IEw8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwuuryoN7QPg9N-
> 6aTY_jEvDZt
> > MZR0o&s=GAFKK3jSahAPFXMGcPGbVNTl0CesJy_qfs5TxXfGOX0&e= >.
> > Find the GDB manual and other documentation resources online at:
> > <https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fur
> > ldefense.proofpoint.com%2Fv2%2Furl%3Fu%3Dhttp-
> 3A__www.gnu.org_softwar&
> >
> data=02%7C01%7Cxuemingl%40mellanox.com%7C28928b49921642d1062a08d
> 4f9b2a
> >
> 39d%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C63640799303500
> 2193&sd
> >
> ata=UWQCUuBC%2ByrBwUFuwlMHXVHE0Dyp6jujtrpPC%2BD8Is8%3D&reserve
> d=0
> > e_gdb_documentation_&d=DwIFAg&c=jf_iaSHvJObTbx-
> siA1ZOg&r=4TYe4Npql
> > gVi0ArYpZ76FrWp7IEw8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwuuryoN7QPg9N-
> 6a
> > TY_jEvDZtMZR0o&s=JdkMMjGGl-
> 3Z3BGnjCkOFP5lI5BIbRNBxH4EVI70YFc&e= > .
> > For help, type "help".
> > Type "apropos word" to search for commands related to "word"...
> > Reading symbols from
> > examples/multi_process/simple_mp/build/simple_mp...done.
> > (gdb) r
> > Starting program:
> > /home/xueming/mlnx-
> dpdk.org/examples/multi_process/simple_mp/build/sim
> > ple_mp -n 4 -w 0:0.0 --proc-type=secondary -l 3-4 --socket-mem
> > 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
> > [Thread debugging using libthread_db enabled] Using host libthread_db
> library
> > "/lib/powerpc64le-linux-gnu/libthread_db.so.1".
> > EAL: Detected 144 lcore(s)
> > EAL: Probing VFIO support...
> > [New Thread 0x7ffff7a6eff0 (LWP 58811)] [New Thread 0x7ffff726eff0
> > (LWP 58812)]
> >
> > Thread 1 "simple_mp" received signal SIGSEGV, Segmentation fault.
> > 0x00007ffff7d2f3ec in ?? () from /lib/powerpc64le-linux-gnu/libc.so.6
> >  (gdb) bt full
> > #0  0x00007ffff7d2f3ec in ?? () from
> > /lib/powerpc64le-linux-gnu/libc.so.6
> > No symbol table info available.
> > #1  0x0000000010077d54 in rte_ring_lookup (name=0x102a4e28
> > "PRI_2_SEC")
> >     at /home/xueming/mlnx-dpdk.org/lib/librte_ring/rte_ring.c:326
> >         te = 0x7ef3eefd5e00
> >         r = 0x0
> >         ring_list = 0x7ffff7aa250c
> > #2  0x0000000010032640 in main (argc=10, argv=0x7ffffffff3e8)
> >     at
> > /home/xueming/mlnx-
> dpdk.org/examples/multi_process/simple_mp/main.c:12
> > 8
> >         flags = 0
> >         ring_size = 64
> >         pool_size = 1024
> >         pool_cache = 32
> >         priv_data_sz = 0
> >         ret = 9
> >         lcore_id = 32767
> >         cl = 0x7ffff7fef718 <_dl_argv>
> > (gdb) f 1
> > #1  0x0000000010077d54 in rte_ring_lookup (name=0x102a4e28
> > "PRI_2_SEC")
> >     at /home/xueming/mlnx-dpdk.org/lib/librte_ring/rte_ring.c:326
> > 326                     if (strncmp(name, r->name,
> > RTE_RING_NAMESIZE) == 0)
> > (gdb) l
> > 321
> > 322             rte_rwlock_read_lock(RTE_EAL_TAILQ_RWLOCK);
> > 323
> > 324             TAILQ_FOREACH(te, ring_list, next) {
> > 325                     r = (struct rte_ring *) te->data;
> > 326                     if (strncmp(name, r->name,
> > RTE_RING_NAMESIZE) == 0)
> > 327                             break;
> > 328             }
> > 329
> > 330             rte_rwlock_read_unlock(RTE_EAL_TAILQ_RWLOCK);
> > (gdb) p *te
> > $1 = {next = {tqe_next = 0x0, tqe_prev = 0x0}, data = 0x0}
> > (gdb) p *ring_list
> > $2 = {tqh_first = 0x7ef3eefd5e00, tqh_last = 0x7ef3eec6d100}
> >
> > # uname -a
> > Linux dragon-power-01 4.13.0-rc2 #1 SMP Tue Aug 29 17:27:05 IDT 2017
> > ppc64le ppc64le ppc64le GNU/Linux
> >
> > # cat /etc/issue
> > Ubuntu 16.04.2 LTS \n \l
> >
> > # gcc --version
> > gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 Copyright (C)
> > 2015 Free Software Foundation, Inc.
> > This is free software; see the source for copying conditions.  There
> > is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
> > PARTICULAR PURPOSE.
> >
> > # lscpu
> > Architecture:          ppc64le
> > Byte Order:            Little Endian
> > CPU(s):                144
> > On-line CPU(s) list:   0-87,96-103,112-159
> > Thread(s) per core:    8
> > Core(s) per socket:    4
> > Socket(s):             4
> > NUMA node(s):          4
> > Model:                 2.1 (pvr 004b 0201)
> > Model name:            POWER8E (raw), altivec supported
> > CPU max MHz:           3690.0000
> > CPU min MHz:           2061.0000
> > L1d cache:             64K
> > L1i cache:             32K
> > L2 cache:              512K
> > L3 cache:              8192K
> > NUMA node0 CPU(s):     0-39
> > NUMA node1 CPU(s):     40-79
> > NUMA node16 CPU(s):    80-87,96-103,112-119
> > NUMA node17 CPU(s):    120-159
> >
> > # cat build/.config
> > # RTE_EXEC_ENV values are the directories in mk/exec-env/
> > CONFIG_RTE_EXEC_ENV="linuxapp"
> > # RTE_ARCH values are architecture we compile for. directories in
> > mk/arch/ CONFIG_RTE_ARCH="ppc_64"
> > # machine can define specific variables or action for a specific board
> > # RTE_MACHINE values are architecture we compile for. directories in
> > mk/machine/ CONFIG_RTE_MACHINE="power8"
> > # The compiler we use.
> > # RTE_TOOLCHAIN values are architecture we compile for. directories in
> > mk/toolchain/ CONFIG_RTE_TOOLCHAIN="gcc"
> > # Use intrinsics or assembly code for key routines
> > CONFIG_RTE_FORCE_INTRINSICS=n # Machine forces strict alignment
> > constraints.
> > CONFIG_RTE_ARCH_STRICT_ALIGN=n
> > # Compile to share library
> > CONFIG_RTE_BUILD_SHARED_LIB=n
> > # Use newest code breaking previous ABI CONFIG_RTE_NEXT_ABI=y # Major
> > ABI to overwrite library specific LIBABIVER CONFIG_RTE_MAJOR_ABI= #
> > Machine's cache line size
> > CONFIG_RTE_CACHE_LINE_SIZE=128
> > # Compile Environment Abstraction Layer CONFIG_RTE_LIBRTE_EAL=y
> > CONFIG_RTE_MAX_LCORE=256
> > CONFIG_RTE_MAX_NUMA_NODES=32
> > CONFIG_RTE_MAX_MEMSEG=256
> > CONFIG_RTE_MAX_MEMZONE=2560
> > CONFIG_RTE_MAX_TAILQ=32
> > CONFIG_RTE_LOG_LEVEL=RTE_LOG_INFO
> > CONFIG_RTE_LOG_DP_LEVEL=RTE_LOG_INFO
> > CONFIG_RTE_LOG_HISTORY=256
> > CONFIG_RTE_BACKTRACE=y
> > CONFIG_RTE_LIBEAL_USE_HPET=n
> > CONFIG_RTE_EAL_ALLOW_INV_SOCKET_ID=n
> > CONFIG_RTE_EAL_ALWAYS_PANIC_ON_ERROR=n
> > CONFIG_RTE_EAL_IGB_UIO=y
> > CONFIG_RTE_EAL_VFIO=y
> > CONFIG_RTE_MALLOC_DEBUG=n
> > CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=y
> > # Recognize/ignore architecture we compile for. AVX/AVX512 CPU flags
> > for performance/power testing.
> > # AVX512 is marked as experimental for now, will enable it after
> > enough #
> field
> > test and possible optimization.
> > CONFIG_RTE_ENABLE_AVX=y
> > CONFIG_RTE_ENABLE_AVX512=n
> > # Default driver path (or "" to disable) CONFIG_RTE_EAL_PMD_PATH=""
> > # Compile Environment Abstraction Layer to support Vmware TSC map
> > CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=n
> > # Compile architecture we compile for. argument parser library
> > CONFIG_RTE_LIBRTE_KVARGS=y # Compile generic ethernet library
> > CONFIG_RTE_LIBRTE_ETHER=y CONFIG_RTE_LIBRTE_ETHDEV_DEBUG=n
> > CONFIG_RTE_MAX_ETHPORTS=32
> > CONFIG_RTE_MAX_QUEUES_PER_PORT=1024
> > CONFIG_RTE_LIBRTE_IEEE1588=n
> > CONFIG_RTE_ETHDEV_QUEUE_STAT_CNTRS=16
> > CONFIG_RTE_ETHDEV_RXTX_CALLBACKS=y
> > # Turn off Tx preparation stage
> > # Warning: rte_eth_tx_prepare() can be safely disabled only if using a
> > #
> driver
> > which do not implement any Tx preparation.
> > CONFIG_RTE_ETHDEV_TX_PREPARE_NOOP=n
> > # Compile burst-oriented Amazon ENA PMD driver
> > CONFIG_RTE_LIBRTE_ENA_PMD=y CONFIG_RTE_LIBRTE_ENA_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_ENA_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_ENA_DEBUG_TX_FREE=n
> > CONFIG_RTE_LIBRTE_ENA_DEBUG_DRIVER=n
> > CONFIG_RTE_LIBRTE_ENA_COM_DEBUG=n
> > # Compile burst-oriented IGB & EM PMD drivers
> > CONFIG_RTE_LIBRTE_EM_PMD=y CONFIG_RTE_LIBRTE_IGB_PMD=y
> > CONFIG_RTE_LIBRTE_E1000_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_E1000_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_E1000_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_E1000_DEBUG_TX_FREE=n
> > CONFIG_RTE_LIBRTE_E1000_DEBUG_DRIVER=n
> > CONFIG_RTE_LIBRTE_E1000_PF_DISABLE_STRIP_CRC=n
> > # Compile burst-oriented IXGBE PMD driver
> > CONFIG_RTE_LIBRTE_IXGBE_PMD=n
> CONFIG_RTE_LIBRTE_IXGBE_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_IXGBE_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX_FREE=n
> > CONFIG_RTE_LIBRTE_IXGBE_DEBUG_DRIVER=n
> > CONFIG_RTE_LIBRTE_IXGBE_PF_DISABLE_STRIP_CRC=n
> > CONFIG_RTE_IXGBE_INC_VECTOR=y
> > CONFIG_RTE_LIBRTE_IXGBE_BYPASS=n
> > # Compile burst-oriented I40E PMD driver CONFIG_RTE_LIBRTE_I40E_PMD=y
> > CONFIG_RTE_LIBRTE_I40E_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_I40E_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_I40E_DEBUG_TX_FREE=n
> > CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC=y
> > CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=y
> > CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n
> > CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF=64
> > CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VF=4
> > CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM=4
> > # interval up to 8160 us, aligned to 2 (or default value)
> > CONFIG_RTE_LIBRTE_I40E_ITR_INTERVAL=-1
> > # Compile burst-oriented FM10K PMD
> > CONFIG_RTE_LIBRTE_FM10K_PMD=n
> > CONFIG_RTE_LIBRTE_FM10K_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_FM10K_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX_FREE=n
> > CONFIG_RTE_LIBRTE_FM10K_DEBUG_DRIVER=n
> > CONFIG_RTE_LIBRTE_FM10K_RX_OLFLAGS_ENABLE=y
> > CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=y
> > # Compile burst-oriented Mellanox ConnectX-3 (MLX4) PMD
> > CONFIG_RTE_LIBRTE_MLX4_PMD=n CONFIG_RTE_LIBRTE_MLX4_DEBUG=n
> > CONFIG_RTE_LIBRTE_MLX4_DEBUG_BROKEN_VERBS=n
> > CONFIG_RTE_LIBRTE_MLX4_SGE_WR_N=4
> > CONFIG_RTE_LIBRTE_MLX4_MAX_INLINE=0
> > CONFIG_RTE_LIBRTE_MLX4_TX_MP_CACHE=8
> > CONFIG_RTE_LIBRTE_MLX4_SOFT_COUNTERS=1
> > # Compile burst-oriented Mellanox ConnectX-4 & ConnectX-5 (MLX5) PMD
> > CONFIG_RTE_LIBRTE_MLX5_PMD=y CONFIG_RTE_LIBRTE_MLX5_DEBUG=n
> > CONFIG_RTE_LIBRTE_MLX5_TX_MP_CACHE=8
> > # Compile burst-oriented Broadcom PMD driver
> > CONFIG_RTE_LIBRTE_BNX2X_PMD=n CONFIG_RTE_LIBRTE_BNX2X_DEBUG=n
> > CONFIG_RTE_LIBRTE_BNX2X_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_BNX2X_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_BNX2X_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_BNX2X_MF_SUPPORT=n
> > CONFIG_RTE_LIBRTE_BNX2X_DEBUG_PERIODIC=n
> > # Compile burst-oriented Chelsio Terminator (CXGBE) PMD
> > CONFIG_RTE_LIBRTE_CXGBE_PMD=y
> CONFIG_RTE_LIBRTE_CXGBE_DEBUG=n
> > CONFIG_RTE_LIBRTE_CXGBE_DEBUG_REG=n
> > CONFIG_RTE_LIBRTE_CXGBE_DEBUG_MBOX=n
> > CONFIG_RTE_LIBRTE_CXGBE_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_CXGBE_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_CXGBE_TPUT=y
> > # Compile burst-oriented Cisco ENIC PMD driver
> > CONFIG_RTE_LIBRTE_ENIC_PMD=n CONFIG_RTE_LIBRTE_ENIC_DEBUG=n
> > CONFIG_RTE_LIBRTE_ENIC_DEBUG_FLOW=n
> > # Compile burst-oriented Netronome NFP PMD driver
> > CONFIG_RTE_LIBRTE_NFP_PMD=y CONFIG_RTE_LIBRTE_NFP_DEBUG=n #
> Compile
> > burst-oriented Broadcom BNXT PMD driver
> CONFIG_RTE_LIBRTE_BNXT_PMD=y #
> > Compile burst-oriented Solarflare libefx-based PMD
> > CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n
> CONFIG_RTE_LIBRTE_SFC_EFX_DEBUG=n #
> > Compile software PMD backed by
> > SZEDATA2 device CONFIG_RTE_LIBRTE_PMD_SZEDATA2=n # Defines
> firmware
> > type address space.
> > # See documentation for supported values.
> > # Other values raise compile time error.
> > CONFIG_RTE_LIBRTE_PMD_SZEDATA2_AS=0
> > # Compile burst-oriented Cavium Thunderx NICVF PMD driver
> > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD=y
> > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_DRIVER=n
> > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_MBOX=n
> > # Compile burst-oriented Cavium LiquidIO PMD driver
> > CONFIG_RTE_LIBRTE_LIO_PMD=y
> CONFIG_RTE_LIBRTE_LIO_DEBUG_DRIVER=n
> > CONFIG_RTE_LIBRTE_LIO_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_LIO_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_LIO_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_LIO_DEBUG_MBOX=n
> > CONFIG_RTE_LIBRTE_LIO_DEBUG_REGS=n
> > # Compile NXP DPAA2 FSL-MC Bus
> > CONFIG_RTE_LIBRTE_FSLMC_BUS=n
> > # Compile Support Libraries for NXP DPAA2
> > CONFIG_RTE_LIBRTE_DPAA2_MEMPOOL=n
> > CONFIG_RTE_LIBRTE_DPAA2_USE_PHYS_IOVA=y
> > # Compile burst-oriented NXP DPAA2 PMD driver
> > CONFIG_RTE_LIBRTE_DPAA2_PMD=n
> CONFIG_RTE_LIBRTE_DPAA2_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_DPAA2_DEBUG_DRIVER=n
> > CONFIG_RTE_LIBRTE_DPAA2_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX_FREE=n
> > # Compile burst-oriented VIRTIO PMD driver
> > CONFIG_RTE_LIBRTE_VIRTIO_PMD=y
> CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DRIVER=n
> > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DUMP=n
> > # Compile virtio device emulation inside virtio PMD driver
> > CONFIG_RTE_VIRTIO_USER=y # Compile burst-oriented VMXNET3 PMD
> driver
> > CONFIG_RTE_LIBRTE_VMXNET3_PMD=n
> CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX_FREE=n
> > CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_DRIVER=n
> > # Compile example software rings based PMD
> > CONFIG_RTE_LIBRTE_PMD_RING=y
> > CONFIG_RTE_PMD_RING_MAX_RX_RINGS=16
> > CONFIG_RTE_PMD_RING_MAX_TX_RINGS=16
> > # Compile software PMD backed by PCAP files
> > CONFIG_RTE_LIBRTE_PMD_PCAP=n # Compile link bonding PMD library
> > CONFIG_RTE_LIBRTE_PMD_BOND=y
> CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB=n
> > CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n
> > # QLogic 10G/25G/40G/50G/100G PMD
> > CONFIG_RTE_LIBRTE_QEDE_PMD=y
> > CONFIG_RTE_LIBRTE_QEDE_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_QEDE_DEBUG_INFO=n
> > CONFIG_RTE_LIBRTE_QEDE_DEBUG_DRIVER=n
> > CONFIG_RTE_LIBRTE_QEDE_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_QEDE_DEBUG_RX=n
> > #Provides abs path/name of architecture we compile for. firmware file.
> > #Empty string denotes driver will use default firmware
> > CONFIG_RTE_LIBRTE_QEDE_FW=""
> > # Compile software PMD backed by AF_PACKET sockets (Linux only)
> > CONFIG_RTE_LIBRTE_PMD_AF_PACKET=y # Compile ARK PMD
> > CONFIG_RTE_LIBRTE_ARK_PMD=y CONFIG_RTE_LIBRTE_ARK_PAD_TX=y
> > CONFIG_RTE_LIBRTE_ARK_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_ARK_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_ARK_DEBUG_STATS=n
> > CONFIG_RTE_LIBRTE_ARK_DEBUG_TRACE=n
> > # Compile WRS accelerated virtual port (AVP) guest PMD driver
> > CONFIG_RTE_LIBRTE_AVP_PMD=n CONFIG_RTE_LIBRTE_AVP_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_AVP_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_AVP_DEBUG_DRIVER=y
> > CONFIG_RTE_LIBRTE_AVP_DEBUG_BUFFERS=n
> > # Compile architecture we compile for. TAP PMD # It is enabled by
> > default
> for
> > Linux only.
> > CONFIG_RTE_LIBRTE_PMD_TAP=y
> > # Compile Xen PMD
> > CONFIG_RTE_LIBRTE_PMD_XENVIRT=n
> > # Compile null PMD
> > CONFIG_RTE_LIBRTE_PMD_NULL=y
> > # Compile fail-safe PMD
> > CONFIG_RTE_LIBRTE_PMD_FAILSAFE=y
> > # Do prefetch of packet data within PMD driver receive function
> > CONFIG_RTE_PMD_PACKET_PREFETCH=y # Compile generic crypto device
> > library CONFIG_RTE_LIBRTE_CRYPTODEV=y
> > CONFIG_RTE_LIBRTE_CRYPTODEV_DEBUG=n
> > CONFIG_RTE_CRYPTO_MAX_DEVS=64
> > CONFIG_RTE_CRYPTODEV_NAME_LEN=64
> > # Compile PMD for ARMv8 Crypto device
> > CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO=n
> > CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO_DEBUG=n
> > # Compile NXP DPAA2 crypto sec driver for CAAM HW
> > CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC=n
> > CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_DRIVER=n
> > CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_RX=n
> > # Compile PMD for QuickAssist based devices
> > CONFIG_RTE_LIBRTE_PMD_QAT=n
> CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_DRIVER=n
> > # Number of sessions to create in architecture we compile for. session
> memory
> > pool # on a single QuickAssist device.
> > CONFIG_RTE_QAT_PMD_MAX_NB_SESSIONS=2048
> > # Compile PMD for AESNI backed device
> > CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n
> > CONFIG_RTE_LIBRTE_PMD_AESNI_MB_DEBUG=n
> > # Compile PMD for Software backed device
> > CONFIG_RTE_LIBRTE_PMD_OPENSSL=n
> CONFIG_RTE_LIBRTE_PMD_OPENSSL_DEBUG=n
> > # Compile PMD for AESNI GCM device
> > CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=n
> > CONFIG_RTE_LIBRTE_PMD_AESNI_GCM_DEBUG=n
> > # Compile PMD for SNOW 3G device
> > CONFIG_RTE_LIBRTE_PMD_SNOW3G=n
> > CONFIG_RTE_LIBRTE_PMD_SNOW3G_DEBUG=n
> > # Compile PMD for KASUMI device
> > CONFIG_RTE_LIBRTE_PMD_KASUMI=n
> > CONFIG_RTE_LIBRTE_PMD_KASUMI_DEBUG=n
> > # Compile PMD for ZUC device
> > CONFIG_RTE_LIBRTE_PMD_ZUC=n
> > CONFIG_RTE_LIBRTE_PMD_ZUC_DEBUG=n
> > # Compile PMD for Crypto Scheduler device
> > CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER=y
> > CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER_DEBUG=n
> > # Compile PMD for NULL Crypto device
> > CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO=y
> > # Compile generic event device library CONFIG_RTE_LIBRTE_EVENTDEV=y
> > CONFIG_RTE_LIBRTE_EVENTDEV_DEBUG=n
> > CONFIG_RTE_EVENT_MAX_DEVS=16
> > CONFIG_RTE_EVENT_MAX_QUEUES_PER_DEV=64
> > # Compile PMD for skeleton event device
> > CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV=y
> > CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV_DEBUG=n
> > # Compile PMD for software event device
> > CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV=y
> > CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV_DEBUG=n
> > # Compile PMD for octeontx sso event device
> > CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF=y
> > CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF_DEBUG=n
> > # Compile librte_ring
> > CONFIG_RTE_LIBRTE_RING=y
> > # Compile librte_mempool
> > CONFIG_RTE_LIBRTE_MEMPOOL=y
> > CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512
> > CONFIG_RTE_LIBRTE_MEMPOOL_DEBUG=n
> > # Compile Mempool drivers
> > CONFIG_RTE_DRIVER_MEMPOOL_RING=y
> > CONFIG_RTE_DRIVER_MEMPOOL_STACK=y
> > # Compile librte_mbuf
> > CONFIG_RTE_LIBRTE_MBUF=y
> > CONFIG_RTE_LIBRTE_MBUF_DEBUG=n
> > CONFIG_RTE_MBUF_DEFAULT_MEMPOOL_OPS="ring_mp_mc"
> > CONFIG_RTE_MBUF_REFCNT_ATOMIC=y
> > CONFIG_RTE_PKTMBUF_HEADROOM=128
> > # Compile librte_timer
> > CONFIG_RTE_LIBRTE_TIMER=y
> > CONFIG_RTE_LIBRTE_TIMER_DEBUG=n
> > # Compile librte_cfgfile
> > CONFIG_RTE_LIBRTE_CFGFILE=y
> > # Compile librte_cmdline
> > CONFIG_RTE_LIBRTE_CMDLINE=y
> > CONFIG_RTE_LIBRTE_CMDLINE_DEBUG=n
> > # Compile librte_hash
> > CONFIG_RTE_LIBRTE_HASH=y
> > CONFIG_RTE_LIBRTE_HASH_DEBUG=n
> > # Compile librte_efd
> > CONFIG_RTE_LIBRTE_EFD=y
> > # Compile librte_jobstats
> > CONFIG_RTE_LIBRTE_JOBSTATS=y
> > # Compile architecture we compile for. device metrics library
> > CONFIG_RTE_LIBRTE_METRICS=y # Compile architecture we compile for.
> > bitrate statistics library CONFIG_RTE_LIBRTE_BITRATE=y # Compile
> > architecture we compile for. latency statistics library
> > CONFIG_RTE_LIBRTE_LATENCY_STATS=y # Compile librte_lpm
> > CONFIG_RTE_LIBRTE_LPM=y CONFIG_RTE_LIBRTE_LPM_DEBUG=n #
> Compile
> > librte_acl CONFIG_RTE_LIBRTE_ACL=y CONFIG_RTE_LIBRTE_ACL_DEBUG=n
> #
> > Compile librte_power CONFIG_RTE_LIBRTE_POWER=y
> > CONFIG_RTE_LIBRTE_POWER_DEBUG=n
> > CONFIG_RTE_MAX_LCORE_FREQS=64
> > # Compile librte_net
> > CONFIG_RTE_LIBRTE_NET=y
> > # Compile librte_ip_frag
> > CONFIG_RTE_LIBRTE_IP_FRAG=y
> > CONFIG_RTE_LIBRTE_IP_FRAG_DEBUG=n
> > CONFIG_RTE_LIBRTE_IP_FRAG_MAX_FRAG=4
> > CONFIG_RTE_LIBRTE_IP_FRAG_TBL_STAT=n
> > # Compile GRO library
> > CONFIG_RTE_LIBRTE_GRO=y
> > # Compile librte_meter
> > CONFIG_RTE_LIBRTE_METER=y
> > # Compile librte_sched
> > CONFIG_RTE_LIBRTE_SCHED=y
> > CONFIG_RTE_SCHED_DEBUG=n
> > CONFIG_RTE_SCHED_RED=n
> > CONFIG_RTE_SCHED_COLLECT_STATS=n
> > CONFIG_RTE_SCHED_SUBPORT_TC_OV=n
> > CONFIG_RTE_SCHED_PORT_N_GRINDERS=8
> > CONFIG_RTE_SCHED_VECTOR=n
> > # Compile architecture we compile for. distributor library
> > CONFIG_RTE_LIBRTE_DISTRIBUTOR=y # Compile architecture we compile for.
> > reorder library CONFIG_RTE_LIBRTE_REORDER=y # Compile librte_port
> > CONFIG_RTE_LIBRTE_PORT=y CONFIG_RTE_PORT_STATS_COLLECT=n
> > CONFIG_RTE_PORT_PCAP=n # Compile librte_table
> > CONFIG_RTE_LIBRTE_TABLE=y CONFIG_RTE_TABLE_STATS_COLLECT=n #
> Compile
> > librte_pipeline CONFIG_RTE_LIBRTE_PIPELINE=y
> > CONFIG_RTE_PIPELINE_STATS_COLLECT=n
> > # Compile librte_kni
> > CONFIG_RTE_LIBRTE_KNI=y
> > CONFIG_RTE_LIBRTE_PMD_KNI=y
> > CONFIG_RTE_KNI_KMOD=y
> > CONFIG_RTE_KNI_KMOD_ETHTOOL=n
> > CONFIG_RTE_KNI_PREEMPT_DEFAULT=y
> > # Compile architecture we compile for. pdump library
> > CONFIG_RTE_LIBRTE_PDUMP=y # Compile vhost user library
> > CONFIG_RTE_LIBRTE_VHOST=y CONFIG_RTE_LIBRTE_VHOST_NUMA=y
> > CONFIG_RTE_LIBRTE_VHOST_DEBUG=n # Compile vhost PMD # To compile,
> > CONFIG_RTE_LIBRTE_VHOST should be enabled.
> > CONFIG_RTE_LIBRTE_PMD_VHOST=y
> > #Compile Xen domain0 support
> > CONFIG_RTE_LIBRTE_XEN_DOM0=n
> > # Compile architecture we compile for. test application
> > CONFIG_RTE_APP_TEST=y CONFIG_RTE_APP_TEST_RESOURCE_TAR=n
> > # Compile architecture we compile for. PMD test application
> > CONFIG_RTE_TEST_PMD=y
> CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES=n
> > CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS=n
> > # Compile architecture we compile for. crypto performance application
> > CONFIG_RTE_APP_CRYPTO_PERF=y # Compile architecture we compile for.
> > eventdev application CONFIG_RTE_APP_EVENTDEV=y
> > CONFIG_RTE_EXEC_ENV_LINUXAPP=y CONFIG_RTE_ARCH_PPC_64=y
> > CONFIG_RTE_ARCH_64=y CONFIG_RTE_TOOLCHAIN_GCC=y # Note: Power
> doesn't
> > have this support # Note: Initially, all of architecture we
> compile for.
> > PMD drivers compilation are turned off on Power # Will turn on them
> > only
> after
> > architecture we compile for. successful testing on Power
> >
> > Please refer here for more information on running DPDK multi-process
> > examples:
> >
> > https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Furl
> > defense.proofpoint.com%2Fv2%2Furl%3Fu%3Dhttp-
> 3A__dpdk.org_doc_guides_s
> >
> &data=02%7C01%7Cxuemingl%40mellanox.com%7C28928b49921642d1062a08
> d4f9b2
> >
> a39d%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C6364079930350
> 02193&s
> >
> data=y%2F1xdeUMskuPRIm6sx%2F4Xp6QXmAApyCilhd4kWFHN14%3D&reserve
> d=0
> > ample-5Fapp-5Fug_multi-5Fprocess.html&d=DwIFAg&c=jf_iaSHvJObTbx-
> siA1Z
> >
> Og&r=4TYe4NpqlgVi0ArYpZ76FrWp7IEw8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwu
> > uryoN7QPg9N-6aTY_jEvDZtMZR0o&s=gupwe5WWQ-
> ap2jObFko6UJymrcy4jTmF
> > 2r1dZ2fQN9E&e=
> >
> > Best Regards,
> > Xueming
> 


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [dpdk-dev] multi-process shared memory on PPC
  2017-08-31 14:40 [dpdk-dev] multi-process shared memory on PPC Xueming(Steven) Li
  2017-09-12  7:46 ` Chao Zhu
@ 2017-09-12  8:01 ` Chao Zhu
  2017-09-12  8:12   ` Xueming(Steven) Li
  1 sibling, 1 reply; 7+ messages in thread
From: Chao Zhu @ 2017-09-12  8:01 UTC (permalink / raw)
  To: 'Xueming(Steven) Li'; +Cc: dev

Xueming,

I tried it on my local server, it works fine.
Did you set this value
"/sys/kernel/mm/hugepages/hugepages-16384kB/nr_overcommit_hugepages" ?
It should be the same value as "
/sys/kernel/mm/hugepages/hugepages-16384kB/nr_hugepages" on ppc64le.

> -----Original Message-----
> From: Xueming(Steven) Li [mailto:xuemingl@mellanox.com]
> Sent: 2017年8月31日 22:40
> To: Chao Zhu <chaozhu@linux.vnet.ibm.com>
> Cc: dev@dpdk.org
> Subject: multi-process shared memory on PPC
> 
> Hi all,
> 
> I'm testing multi-process example on PowerPC system, looks like shared
> memory not working properly.
> Below are the error and debug info of the first multi-process example
> 'simple_mp' (works as expected on X86):
> 
> // Build DPDK, master branch
> # make T=ppc_64-power8-linuxapp-gcc -j160 -C
> examples/multi_process/simple_mp/ #
> examples/multi_process/simple_mp/build/simple_mp  -w 0:0.0
> --proc-type=primary -l 1-2 --socket-mem
> 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
> APP: Finished Process Init.
> Starting core 2
> simple_mp >
> 
> // Open another terminal and run secondary process # gdb --args
> examples/multi_process/simple_mp/build/simple_mp -n 4 -w 0:0.0
> --proc-type=secondary -l 3-4 --socket-mem
> 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
> GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1 Copyright (C) 2016 Free
> Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later
> <https://urldefense.proofpoint.com/v2/url?u=http-3A__gnu.org_licenses_gpl.
h
> tml&d=DwIFAg&c=jf_iaSHvJObTbx-siA1ZOg&r=4TYe4NpqlgVi0ArYpZ76FrWp7IE
> w8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwuuryoN7QPg9N-6aTY_jEvDZtMZR0o&s
> =SbDQBN7qJ9z8fWCSePyvm5FFncp2P_9XZm-qs1lH5PE&e= > This is free
> software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "powerpc64le-linux-gnu".
> Type "show configuration" for configuration details.
> For bug reporting instructions, please see:
> <https://urldefense.proofpoint.com/v2/url?u=http-3A__www.gnu.org_softwar
> e_gdb_bugs_&d=DwIFAg&c=jf_iaSHvJObTbx-siA1ZOg&r=4TYe4NpqlgVi0ArYpZ
> 76FrWp7IEw8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwuuryoN7QPg9N-6aTY_jEvDZt
> MZR0o&s=GAFKK3jSahAPFXMGcPGbVNTl0CesJy_qfs5TxXfGOX0&e= >.
> Find the GDB manual and other documentation resources online at:
> <https://urldefense.proofpoint.com/v2/url?u=http-3A__www.gnu.org_softwar
> e_gdb_documentation_&d=DwIFAg&c=jf_iaSHvJObTbx-siA1ZOg&r=4TYe4Npql
> gVi0ArYpZ76FrWp7IEw8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwuuryoN7QPg9N-6a
> TY_jEvDZtMZR0o&s=JdkMMjGGl-3Z3BGnjCkOFP5lI5BIbRNBxH4EVI70YFc&e= >
> .
> For help, type "help".
> Type "apropos word" to search for commands related to "word"...
> Reading symbols from
> examples/multi_process/simple_mp/build/simple_mp...done.
> (gdb) r
> Starting program:
> /home/xueming/mlnx-dpdk.org/examples/multi_process/simple_mp/build/sim
> ple_mp -n 4 -w 0:0.0 --proc-type=secondary -l 3-4 --socket-mem
> 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
> [Thread debugging using libthread_db enabled] Using host libthread_db
library
> "/lib/powerpc64le-linux-gnu/libthread_db.so.1".
> EAL: Detected 144 lcore(s)
> EAL: Probing VFIO support...
> [New Thread 0x7ffff7a6eff0 (LWP 58811)]
> [New Thread 0x7ffff726eff0 (LWP 58812)]
> 
> Thread 1 "simple_mp" received signal SIGSEGV, Segmentation fault.
> 0x00007ffff7d2f3ec in ?? () from /lib/powerpc64le-linux-gnu/libc.so.6
>  (gdb) bt full
> #0  0x00007ffff7d2f3ec in ?? () from /lib/powerpc64le-linux-gnu/libc.so.6
> No symbol table info available.
> #1  0x0000000010077d54 in rte_ring_lookup (name=0x102a4e28
> "PRI_2_SEC")
>     at /home/xueming/mlnx-dpdk.org/lib/librte_ring/rte_ring.c:326
>         te = 0x7ef3eefd5e00
>         r = 0x0
>         ring_list = 0x7ffff7aa250c
> #2  0x0000000010032640 in main (argc=10, argv=0x7ffffffff3e8)
>     at
> /home/xueming/mlnx-dpdk.org/examples/multi_process/simple_mp/main.c:12
> 8
>         flags = 0
>         ring_size = 64
>         pool_size = 1024
>         pool_cache = 32
>         priv_data_sz = 0
>         ret = 9
>         lcore_id = 32767
>         cl = 0x7ffff7fef718 <_dl_argv>
> (gdb) f 1
> #1  0x0000000010077d54 in rte_ring_lookup (name=0x102a4e28
> "PRI_2_SEC")
>     at /home/xueming/mlnx-dpdk.org/lib/librte_ring/rte_ring.c:326
> 326                     if (strncmp(name, r->name,
> RTE_RING_NAMESIZE) == 0)
> (gdb) l
> 321
> 322             rte_rwlock_read_lock(RTE_EAL_TAILQ_RWLOCK);
> 323
> 324             TAILQ_FOREACH(te, ring_list, next) {
> 325                     r = (struct rte_ring *) te->data;
> 326                     if (strncmp(name, r->name,
> RTE_RING_NAMESIZE) == 0)
> 327                             break;
> 328             }
> 329
> 330             rte_rwlock_read_unlock(RTE_EAL_TAILQ_RWLOCK);
> (gdb) p *te
> $1 = {next = {tqe_next = 0x0, tqe_prev = 0x0}, data = 0x0}
> (gdb) p *ring_list
> $2 = {tqh_first = 0x7ef3eefd5e00, tqh_last = 0x7ef3eec6d100}
> 
> # uname -a
> Linux dragon-power-01 4.13.0-rc2 #1 SMP Tue Aug 29 17:27:05 IDT 2017
> ppc64le ppc64le ppc64le GNU/Linux
> 
> # cat /etc/issue
> Ubuntu 16.04.2 LTS \n \l
> 
> # gcc --version
> gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 Copyright (C) 2015
> Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.  There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
> PURPOSE.
> 
> # lscpu
> Architecture:          ppc64le
> Byte Order:            Little Endian
> CPU(s):                144
> On-line CPU(s) list:   0-87,96-103,112-159
> Thread(s) per core:    8
> Core(s) per socket:    4
> Socket(s):             4
> NUMA node(s):          4
> Model:                 2.1 (pvr 004b 0201)
> Model name:            POWER8E (raw), altivec supported
> CPU max MHz:           3690.0000
> CPU min MHz:           2061.0000
> L1d cache:             64K
> L1i cache:             32K
> L2 cache:              512K
> L3 cache:              8192K
> NUMA node0 CPU(s):     0-39
> NUMA node1 CPU(s):     40-79
> NUMA node16 CPU(s):    80-87,96-103,112-119
> NUMA node17 CPU(s):    120-159
> 
> # cat build/.config
> # RTE_EXEC_ENV values are the directories in mk/exec-env/
> CONFIG_RTE_EXEC_ENV="linuxapp"
> # RTE_ARCH values are architecture we compile for. directories in mk/arch/
> CONFIG_RTE_ARCH="ppc_64"
> # machine can define specific variables or action for a specific board #
> RTE_MACHINE values are architecture we compile for. directories in
> mk/machine/ CONFIG_RTE_MACHINE="power8"
> # The compiler we use.
> # RTE_TOOLCHAIN values are architecture we compile for. directories in
> mk/toolchain/ CONFIG_RTE_TOOLCHAIN="gcc"
> # Use intrinsics or assembly code for key routines
> CONFIG_RTE_FORCE_INTRINSICS=n # Machine forces strict alignment
> constraints.
> CONFIG_RTE_ARCH_STRICT_ALIGN=n
> # Compile to share library
> CONFIG_RTE_BUILD_SHARED_LIB=n
> # Use newest code breaking previous ABI
> CONFIG_RTE_NEXT_ABI=y
> # Major ABI to overwrite library specific LIBABIVER CONFIG_RTE_MAJOR_ABI=
> # Machine's cache line size
> CONFIG_RTE_CACHE_LINE_SIZE=128
> # Compile Environment Abstraction Layer
> CONFIG_RTE_LIBRTE_EAL=y
> CONFIG_RTE_MAX_LCORE=256
> CONFIG_RTE_MAX_NUMA_NODES=32
> CONFIG_RTE_MAX_MEMSEG=256
> CONFIG_RTE_MAX_MEMZONE=2560
> CONFIG_RTE_MAX_TAILQ=32
> CONFIG_RTE_LOG_LEVEL=RTE_LOG_INFO
> CONFIG_RTE_LOG_DP_LEVEL=RTE_LOG_INFO
> CONFIG_RTE_LOG_HISTORY=256
> CONFIG_RTE_BACKTRACE=y
> CONFIG_RTE_LIBEAL_USE_HPET=n
> CONFIG_RTE_EAL_ALLOW_INV_SOCKET_ID=n
> CONFIG_RTE_EAL_ALWAYS_PANIC_ON_ERROR=n
> CONFIG_RTE_EAL_IGB_UIO=y
> CONFIG_RTE_EAL_VFIO=y
> CONFIG_RTE_MALLOC_DEBUG=n
> CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=y
> # Recognize/ignore architecture we compile for. AVX/AVX512 CPU flags for
> performance/power testing.
> # AVX512 is marked as experimental for now, will enable it after enough #
field
> test and possible optimization.
> CONFIG_RTE_ENABLE_AVX=y
> CONFIG_RTE_ENABLE_AVX512=n
> # Default driver path (or "" to disable) CONFIG_RTE_EAL_PMD_PATH=""
> # Compile Environment Abstraction Layer to support Vmware TSC map
> CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=n
> # Compile architecture we compile for. argument parser library
> CONFIG_RTE_LIBRTE_KVARGS=y # Compile generic ethernet library
> CONFIG_RTE_LIBRTE_ETHER=y CONFIG_RTE_LIBRTE_ETHDEV_DEBUG=n
> CONFIG_RTE_MAX_ETHPORTS=32
> CONFIG_RTE_MAX_QUEUES_PER_PORT=1024
> CONFIG_RTE_LIBRTE_IEEE1588=n
> CONFIG_RTE_ETHDEV_QUEUE_STAT_CNTRS=16
> CONFIG_RTE_ETHDEV_RXTX_CALLBACKS=y
> # Turn off Tx preparation stage
> # Warning: rte_eth_tx_prepare() can be safely disabled only if using a #
driver
> which do not implement any Tx preparation.
> CONFIG_RTE_ETHDEV_TX_PREPARE_NOOP=n
> # Compile burst-oriented Amazon ENA PMD driver
> CONFIG_RTE_LIBRTE_ENA_PMD=y CONFIG_RTE_LIBRTE_ENA_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_ENA_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_ENA_DEBUG_TX_FREE=n
> CONFIG_RTE_LIBRTE_ENA_DEBUG_DRIVER=n
> CONFIG_RTE_LIBRTE_ENA_COM_DEBUG=n
> # Compile burst-oriented IGB & EM PMD drivers
> CONFIG_RTE_LIBRTE_EM_PMD=y CONFIG_RTE_LIBRTE_IGB_PMD=y
> CONFIG_RTE_LIBRTE_E1000_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_E1000_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_E1000_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_E1000_DEBUG_TX_FREE=n
> CONFIG_RTE_LIBRTE_E1000_DEBUG_DRIVER=n
> CONFIG_RTE_LIBRTE_E1000_PF_DISABLE_STRIP_CRC=n
> # Compile burst-oriented IXGBE PMD driver
> CONFIG_RTE_LIBRTE_IXGBE_PMD=n
> CONFIG_RTE_LIBRTE_IXGBE_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_IXGBE_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX_FREE=n
> CONFIG_RTE_LIBRTE_IXGBE_DEBUG_DRIVER=n
> CONFIG_RTE_LIBRTE_IXGBE_PF_DISABLE_STRIP_CRC=n
> CONFIG_RTE_IXGBE_INC_VECTOR=y
> CONFIG_RTE_LIBRTE_IXGBE_BYPASS=n
> # Compile burst-oriented I40E PMD driver CONFIG_RTE_LIBRTE_I40E_PMD=y
> CONFIG_RTE_LIBRTE_I40E_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_I40E_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_I40E_DEBUG_TX_FREE=n
> CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC=y
> CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=y
> CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n
> CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF=64
> CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VF=4
> CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM=4
> # interval up to 8160 us, aligned to 2 (or default value)
> CONFIG_RTE_LIBRTE_I40E_ITR_INTERVAL=-1
> # Compile burst-oriented FM10K PMD
> CONFIG_RTE_LIBRTE_FM10K_PMD=n
> CONFIG_RTE_LIBRTE_FM10K_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_FM10K_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX_FREE=n
> CONFIG_RTE_LIBRTE_FM10K_DEBUG_DRIVER=n
> CONFIG_RTE_LIBRTE_FM10K_RX_OLFLAGS_ENABLE=y
> CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=y
> # Compile burst-oriented Mellanox ConnectX-3 (MLX4) PMD
> CONFIG_RTE_LIBRTE_MLX4_PMD=n CONFIG_RTE_LIBRTE_MLX4_DEBUG=n
> CONFIG_RTE_LIBRTE_MLX4_DEBUG_BROKEN_VERBS=n
> CONFIG_RTE_LIBRTE_MLX4_SGE_WR_N=4
> CONFIG_RTE_LIBRTE_MLX4_MAX_INLINE=0
> CONFIG_RTE_LIBRTE_MLX4_TX_MP_CACHE=8
> CONFIG_RTE_LIBRTE_MLX4_SOFT_COUNTERS=1
> # Compile burst-oriented Mellanox ConnectX-4 & ConnectX-5 (MLX5) PMD
> CONFIG_RTE_LIBRTE_MLX5_PMD=y CONFIG_RTE_LIBRTE_MLX5_DEBUG=n
> CONFIG_RTE_LIBRTE_MLX5_TX_MP_CACHE=8
> # Compile burst-oriented Broadcom PMD driver
> CONFIG_RTE_LIBRTE_BNX2X_PMD=n CONFIG_RTE_LIBRTE_BNX2X_DEBUG=n
> CONFIG_RTE_LIBRTE_BNX2X_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_BNX2X_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_BNX2X_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_BNX2X_MF_SUPPORT=n
> CONFIG_RTE_LIBRTE_BNX2X_DEBUG_PERIODIC=n
> # Compile burst-oriented Chelsio Terminator (CXGBE) PMD
> CONFIG_RTE_LIBRTE_CXGBE_PMD=y CONFIG_RTE_LIBRTE_CXGBE_DEBUG=n
> CONFIG_RTE_LIBRTE_CXGBE_DEBUG_REG=n
> CONFIG_RTE_LIBRTE_CXGBE_DEBUG_MBOX=n
> CONFIG_RTE_LIBRTE_CXGBE_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_CXGBE_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_CXGBE_TPUT=y
> # Compile burst-oriented Cisco ENIC PMD driver
> CONFIG_RTE_LIBRTE_ENIC_PMD=n CONFIG_RTE_LIBRTE_ENIC_DEBUG=n
> CONFIG_RTE_LIBRTE_ENIC_DEBUG_FLOW=n
> # Compile burst-oriented Netronome NFP PMD driver
> CONFIG_RTE_LIBRTE_NFP_PMD=y CONFIG_RTE_LIBRTE_NFP_DEBUG=n #
> Compile burst-oriented Broadcom BNXT PMD driver
> CONFIG_RTE_LIBRTE_BNXT_PMD=y # Compile burst-oriented Solarflare
> libefx-based PMD CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n
> CONFIG_RTE_LIBRTE_SFC_EFX_DEBUG=n # Compile software PMD backed by
> SZEDATA2 device CONFIG_RTE_LIBRTE_PMD_SZEDATA2=n # Defines firmware
> type address space.
> # See documentation for supported values.
> # Other values raise compile time error.
> CONFIG_RTE_LIBRTE_PMD_SZEDATA2_AS=0
> # Compile burst-oriented Cavium Thunderx NICVF PMD driver
> CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD=y
> CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_DRIVER=n
> CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_MBOX=n
> # Compile burst-oriented Cavium LiquidIO PMD driver
> CONFIG_RTE_LIBRTE_LIO_PMD=y
> CONFIG_RTE_LIBRTE_LIO_DEBUG_DRIVER=n
> CONFIG_RTE_LIBRTE_LIO_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_LIO_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_LIO_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_LIO_DEBUG_MBOX=n
> CONFIG_RTE_LIBRTE_LIO_DEBUG_REGS=n
> # Compile NXP DPAA2 FSL-MC Bus
> CONFIG_RTE_LIBRTE_FSLMC_BUS=n
> # Compile Support Libraries for NXP DPAA2
> CONFIG_RTE_LIBRTE_DPAA2_MEMPOOL=n
> CONFIG_RTE_LIBRTE_DPAA2_USE_PHYS_IOVA=y
> # Compile burst-oriented NXP DPAA2 PMD driver
> CONFIG_RTE_LIBRTE_DPAA2_PMD=n
> CONFIG_RTE_LIBRTE_DPAA2_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_DPAA2_DEBUG_DRIVER=n
> CONFIG_RTE_LIBRTE_DPAA2_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX_FREE=n
> # Compile burst-oriented VIRTIO PMD driver
> CONFIG_RTE_LIBRTE_VIRTIO_PMD=y
> CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DRIVER=n
> CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DUMP=n
> # Compile virtio device emulation inside virtio PMD driver
> CONFIG_RTE_VIRTIO_USER=y # Compile burst-oriented VMXNET3 PMD driver
> CONFIG_RTE_LIBRTE_VMXNET3_PMD=n
> CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX_FREE=n
> CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_DRIVER=n
> # Compile example software rings based PMD
> CONFIG_RTE_LIBRTE_PMD_RING=y
> CONFIG_RTE_PMD_RING_MAX_RX_RINGS=16
> CONFIG_RTE_PMD_RING_MAX_TX_RINGS=16
> # Compile software PMD backed by PCAP files
> CONFIG_RTE_LIBRTE_PMD_PCAP=n # Compile link bonding PMD library
> CONFIG_RTE_LIBRTE_PMD_BOND=y
> CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB=n
> CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n
> # QLogic 10G/25G/40G/50G/100G PMD
> CONFIG_RTE_LIBRTE_QEDE_PMD=y
> CONFIG_RTE_LIBRTE_QEDE_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_QEDE_DEBUG_INFO=n
> CONFIG_RTE_LIBRTE_QEDE_DEBUG_DRIVER=n
> CONFIG_RTE_LIBRTE_QEDE_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_QEDE_DEBUG_RX=n
> #Provides abs path/name of architecture we compile for. firmware file.
> #Empty string denotes driver will use default firmware
> CONFIG_RTE_LIBRTE_QEDE_FW=""
> # Compile software PMD backed by AF_PACKET sockets (Linux only)
> CONFIG_RTE_LIBRTE_PMD_AF_PACKET=y # Compile ARK PMD
> CONFIG_RTE_LIBRTE_ARK_PMD=y CONFIG_RTE_LIBRTE_ARK_PAD_TX=y
> CONFIG_RTE_LIBRTE_ARK_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_ARK_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_ARK_DEBUG_STATS=n
> CONFIG_RTE_LIBRTE_ARK_DEBUG_TRACE=n
> # Compile WRS accelerated virtual port (AVP) guest PMD driver
> CONFIG_RTE_LIBRTE_AVP_PMD=n CONFIG_RTE_LIBRTE_AVP_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_AVP_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_AVP_DEBUG_DRIVER=y
> CONFIG_RTE_LIBRTE_AVP_DEBUG_BUFFERS=n
> # Compile architecture we compile for. TAP PMD # It is enabled by default
for
> Linux only.
> CONFIG_RTE_LIBRTE_PMD_TAP=y
> # Compile Xen PMD
> CONFIG_RTE_LIBRTE_PMD_XENVIRT=n
> # Compile null PMD
> CONFIG_RTE_LIBRTE_PMD_NULL=y
> # Compile fail-safe PMD
> CONFIG_RTE_LIBRTE_PMD_FAILSAFE=y
> # Do prefetch of packet data within PMD driver receive function
> CONFIG_RTE_PMD_PACKET_PREFETCH=y # Compile generic crypto device
> library CONFIG_RTE_LIBRTE_CRYPTODEV=y
> CONFIG_RTE_LIBRTE_CRYPTODEV_DEBUG=n
> CONFIG_RTE_CRYPTO_MAX_DEVS=64
> CONFIG_RTE_CRYPTODEV_NAME_LEN=64
> # Compile PMD for ARMv8 Crypto device
> CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO=n
> CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO_DEBUG=n
> # Compile NXP DPAA2 crypto sec driver for CAAM HW
> CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC=n
> CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_DRIVER=n
> CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_RX=n
> # Compile PMD for QuickAssist based devices
> CONFIG_RTE_LIBRTE_PMD_QAT=n
> CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_INIT=n
> CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_DRIVER=n
> # Number of sessions to create in architecture we compile for. session
memory
> pool # on a single QuickAssist device.
> CONFIG_RTE_QAT_PMD_MAX_NB_SESSIONS=2048
> # Compile PMD for AESNI backed device
> CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n
> CONFIG_RTE_LIBRTE_PMD_AESNI_MB_DEBUG=n
> # Compile PMD for Software backed device
> CONFIG_RTE_LIBRTE_PMD_OPENSSL=n
> CONFIG_RTE_LIBRTE_PMD_OPENSSL_DEBUG=n
> # Compile PMD for AESNI GCM device
> CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=n
> CONFIG_RTE_LIBRTE_PMD_AESNI_GCM_DEBUG=n
> # Compile PMD for SNOW 3G device
> CONFIG_RTE_LIBRTE_PMD_SNOW3G=n
> CONFIG_RTE_LIBRTE_PMD_SNOW3G_DEBUG=n
> # Compile PMD for KASUMI device
> CONFIG_RTE_LIBRTE_PMD_KASUMI=n
> CONFIG_RTE_LIBRTE_PMD_KASUMI_DEBUG=n
> # Compile PMD for ZUC device
> CONFIG_RTE_LIBRTE_PMD_ZUC=n
> CONFIG_RTE_LIBRTE_PMD_ZUC_DEBUG=n
> # Compile PMD for Crypto Scheduler device
> CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER=y
> CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER_DEBUG=n
> # Compile PMD for NULL Crypto device
> CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO=y
> # Compile generic event device library
> CONFIG_RTE_LIBRTE_EVENTDEV=y
> CONFIG_RTE_LIBRTE_EVENTDEV_DEBUG=n
> CONFIG_RTE_EVENT_MAX_DEVS=16
> CONFIG_RTE_EVENT_MAX_QUEUES_PER_DEV=64
> # Compile PMD for skeleton event device
> CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV=y
> CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV_DEBUG=n
> # Compile PMD for software event device
> CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV=y
> CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV_DEBUG=n
> # Compile PMD for octeontx sso event device
> CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF=y
> CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF_DEBUG=n
> # Compile librte_ring
> CONFIG_RTE_LIBRTE_RING=y
> # Compile librte_mempool
> CONFIG_RTE_LIBRTE_MEMPOOL=y
> CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512
> CONFIG_RTE_LIBRTE_MEMPOOL_DEBUG=n
> # Compile Mempool drivers
> CONFIG_RTE_DRIVER_MEMPOOL_RING=y
> CONFIG_RTE_DRIVER_MEMPOOL_STACK=y
> # Compile librte_mbuf
> CONFIG_RTE_LIBRTE_MBUF=y
> CONFIG_RTE_LIBRTE_MBUF_DEBUG=n
> CONFIG_RTE_MBUF_DEFAULT_MEMPOOL_OPS="ring_mp_mc"
> CONFIG_RTE_MBUF_REFCNT_ATOMIC=y
> CONFIG_RTE_PKTMBUF_HEADROOM=128
> # Compile librte_timer
> CONFIG_RTE_LIBRTE_TIMER=y
> CONFIG_RTE_LIBRTE_TIMER_DEBUG=n
> # Compile librte_cfgfile
> CONFIG_RTE_LIBRTE_CFGFILE=y
> # Compile librte_cmdline
> CONFIG_RTE_LIBRTE_CMDLINE=y
> CONFIG_RTE_LIBRTE_CMDLINE_DEBUG=n
> # Compile librte_hash
> CONFIG_RTE_LIBRTE_HASH=y
> CONFIG_RTE_LIBRTE_HASH_DEBUG=n
> # Compile librte_efd
> CONFIG_RTE_LIBRTE_EFD=y
> # Compile librte_jobstats
> CONFIG_RTE_LIBRTE_JOBSTATS=y
> # Compile architecture we compile for. device metrics library
> CONFIG_RTE_LIBRTE_METRICS=y # Compile architecture we compile for.
> bitrate statistics library CONFIG_RTE_LIBRTE_BITRATE=y # Compile
> architecture we compile for. latency statistics library
> CONFIG_RTE_LIBRTE_LATENCY_STATS=y # Compile librte_lpm
> CONFIG_RTE_LIBRTE_LPM=y CONFIG_RTE_LIBRTE_LPM_DEBUG=n # Compile
> librte_acl CONFIG_RTE_LIBRTE_ACL=y CONFIG_RTE_LIBRTE_ACL_DEBUG=n #
> Compile librte_power CONFIG_RTE_LIBRTE_POWER=y
> CONFIG_RTE_LIBRTE_POWER_DEBUG=n
> CONFIG_RTE_MAX_LCORE_FREQS=64
> # Compile librte_net
> CONFIG_RTE_LIBRTE_NET=y
> # Compile librte_ip_frag
> CONFIG_RTE_LIBRTE_IP_FRAG=y
> CONFIG_RTE_LIBRTE_IP_FRAG_DEBUG=n
> CONFIG_RTE_LIBRTE_IP_FRAG_MAX_FRAG=4
> CONFIG_RTE_LIBRTE_IP_FRAG_TBL_STAT=n
> # Compile GRO library
> CONFIG_RTE_LIBRTE_GRO=y
> # Compile librte_meter
> CONFIG_RTE_LIBRTE_METER=y
> # Compile librte_sched
> CONFIG_RTE_LIBRTE_SCHED=y
> CONFIG_RTE_SCHED_DEBUG=n
> CONFIG_RTE_SCHED_RED=n
> CONFIG_RTE_SCHED_COLLECT_STATS=n
> CONFIG_RTE_SCHED_SUBPORT_TC_OV=n
> CONFIG_RTE_SCHED_PORT_N_GRINDERS=8
> CONFIG_RTE_SCHED_VECTOR=n
> # Compile architecture we compile for. distributor library
> CONFIG_RTE_LIBRTE_DISTRIBUTOR=y # Compile architecture we compile for.
> reorder library CONFIG_RTE_LIBRTE_REORDER=y # Compile librte_port
> CONFIG_RTE_LIBRTE_PORT=y CONFIG_RTE_PORT_STATS_COLLECT=n
> CONFIG_RTE_PORT_PCAP=n # Compile librte_table
> CONFIG_RTE_LIBRTE_TABLE=y CONFIG_RTE_TABLE_STATS_COLLECT=n #
> Compile librte_pipeline CONFIG_RTE_LIBRTE_PIPELINE=y
> CONFIG_RTE_PIPELINE_STATS_COLLECT=n
> # Compile librte_kni
> CONFIG_RTE_LIBRTE_KNI=y
> CONFIG_RTE_LIBRTE_PMD_KNI=y
> CONFIG_RTE_KNI_KMOD=y
> CONFIG_RTE_KNI_KMOD_ETHTOOL=n
> CONFIG_RTE_KNI_PREEMPT_DEFAULT=y
> # Compile architecture we compile for. pdump library
> CONFIG_RTE_LIBRTE_PDUMP=y # Compile vhost user library
> CONFIG_RTE_LIBRTE_VHOST=y CONFIG_RTE_LIBRTE_VHOST_NUMA=y
> CONFIG_RTE_LIBRTE_VHOST_DEBUG=n # Compile vhost PMD # To compile,
> CONFIG_RTE_LIBRTE_VHOST should be enabled.
> CONFIG_RTE_LIBRTE_PMD_VHOST=y
> #Compile Xen domain0 support
> CONFIG_RTE_LIBRTE_XEN_DOM0=n
> # Compile architecture we compile for. test application
> CONFIG_RTE_APP_TEST=y CONFIG_RTE_APP_TEST_RESOURCE_TAR=n
> # Compile architecture we compile for. PMD test application
> CONFIG_RTE_TEST_PMD=y
> CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES=n
> CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS=n
> # Compile architecture we compile for. crypto performance application
> CONFIG_RTE_APP_CRYPTO_PERF=y # Compile architecture we compile for.
> eventdev application CONFIG_RTE_APP_EVENTDEV=y
> CONFIG_RTE_EXEC_ENV_LINUXAPP=y CONFIG_RTE_ARCH_PPC_64=y
> CONFIG_RTE_ARCH_64=y CONFIG_RTE_TOOLCHAIN_GCC=y # Note: Power
> doesn't have this support # Note: Initially, all of architecture we
compile for.
> PMD drivers compilation are turned off on Power # Will turn on them only
after
> architecture we compile for. successful testing on Power
> 
> Please refer here for more information on running DPDK multi-process
> examples:
> 
> https://urldefense.proofpoint.com/v2/url?u=http-3A__dpdk.org_doc_guides_s
> ample-5Fapp-5Fug_multi-5Fprocess.html&d=DwIFAg&c=jf_iaSHvJObTbx-siA1Z
> Og&r=4TYe4NpqlgVi0ArYpZ76FrWp7IEw8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwu
> uryoN7QPg9N-6aTY_jEvDZtMZR0o&s=gupwe5WWQ-ap2jObFko6UJymrcy4jTmF
> 2r1dZ2fQN9E&e=
> 
> Best Regards,
> Xueming

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [dpdk-dev] multi-process shared memory on PPC
  2017-09-12  8:01 ` Chao Zhu
@ 2017-09-12  8:12   ` Xueming(Steven) Li
  2017-09-12 18:11     ` Xueming(Steven) Li
  0 siblings, 1 reply; 7+ messages in thread
From: Xueming(Steven) Li @ 2017-09-12  8:12 UTC (permalink / raw)
  To: Chao Zhu; +Cc: dev

Great, that might be something missing, will update later. Thanks!

> -----Original Message-----
> From: Chao Zhu [mailto:chaozhu@linux.vnet.ibm.com]
> Sent: Tuesday, September 12, 2017 4:02 PM
> To: Xueming(Steven) Li <xuemingl@mellanox.com>
> Cc: dev@dpdk.org
> Subject: RE: multi-process shared memory on PPC
> 
> Xueming,
> 
> I tried it on my local server, it works fine.
> Did you set this value
> "/sys/kernel/mm/hugepages/hugepages-16384kB/nr_overcommit_hugepages" ?
> It should be the same value as "
> /sys/kernel/mm/hugepages/hugepages-16384kB/nr_hugepages" on ppc64le.
> 
> > -----Original Message-----
> > From: Xueming(Steven) Li [mailto:xuemingl@mellanox.com]
> > Sent: 2017年8月31日 22:40
> > To: Chao Zhu <chaozhu@linux.vnet.ibm.com>
> > Cc: dev@dpdk.org
> > Subject: multi-process shared memory on PPC
> >
> > Hi all,
> >
> > I'm testing multi-process example on PowerPC system, looks like shared
> > memory not working properly.
> > Below are the error and debug info of the first multi-process example
> > 'simple_mp' (works as expected on X86):
> >
> > // Build DPDK, master branch
> > # make T=ppc_64-power8-linuxapp-gcc -j160 -C
> > examples/multi_process/simple_mp/ #
> > examples/multi_process/simple_mp/build/simple_mp  -w 0:0.0
> > --proc-type=primary -l 1-2 --socket-mem
> > 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
> > APP: Finished Process Init.
> > Starting core 2
> > simple_mp >
> >
> > // Open another terminal and run secondary process # gdb --args
> > examples/multi_process/simple_mp/build/simple_mp -n 4 -w 0:0.0
> > --proc-type=secondary -l 3-4 --socket-mem
> > 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
> > GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1 Copyright (C) 2016 Free
> > Software Foundation, Inc.
> > License GPLv3+: GNU GPL version 3 or later
> >
> <https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Furldef
> ense.proofpoint.com%2Fv2%2Furl%3Fu%3Dhttp-
> 3A__gnu.org_licenses_gpl&data=02%7C01%7Cxuemingl%40mellanox.com%7C
> 9cd11fda7a7f48df7cbd08d4f9b486d8%7Ca652971c7d2e4d9ba6a4d149256f461
> b%7C0%7C0%7C636408001138751301&sdata=bb3hwYz7ehCqt4QA6GGqTDMY
> kY1qAJV%2BCMDBVbXmWzE%3D&reserved=0.
> h
> > tml&d=DwIFAg&c=jf_iaSHvJObTbx-
> siA1ZOg&r=4TYe4NpqlgVi0ArYpZ76FrWp7IE
> > w8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwuuryoN7QPg9N-6aTY_jEvDZtMZR0o&s
> > =SbDQBN7qJ9z8fWCSePyvm5FFncp2P_9XZm-qs1lH5PE&e= > This is free
> > software: you are free to change and redistribute it.
> > There is NO WARRANTY, to the extent permitted by law.  Type "show
> copying"
> > and "show warranty" for details.
> > This GDB was configured as "powerpc64le-linux-gnu".
> > Type "show configuration" for configuration details.
> > For bug reporting instructions, please see:
> > <https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fur
> > ldefense.proofpoint.com%2Fv2%2Furl%3Fu%3Dhttp-
> 3A__www.gnu.org_softwar&
> >
> data=02%7C01%7Cxuemingl%40mellanox.com%7C9cd11fda7a7f48df7cbd08d4f
> 9b48
> >
> 6d8%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C63640800113875
> 1301&sd
> >
> ata=4DNDTyIcHpTIU60K7FM%2F1zuASSB1IdZDRyOaiVp1Y%2BY%3D&reserved=
> 0
> > e_gdb_bugs_&d=DwIFAg&c=jf_iaSHvJObTbx-
> siA1ZOg&r=4TYe4NpqlgVi0ArYpZ
> > 76FrWp7IEw8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwuuryoN7QPg9N-
> 6aTY_jEvDZt
> > MZR0o&s=GAFKK3jSahAPFXMGcPGbVNTl0CesJy_qfs5TxXfGOX0&e= >.
> > Find the GDB manual and other documentation resources online at:
> > <https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fur
> > ldefense.proofpoint.com%2Fv2%2Furl%3Fu%3Dhttp-
> 3A__www.gnu.org_softwar&
> >
> data=02%7C01%7Cxuemingl%40mellanox.com%7C9cd11fda7a7f48df7cbd08d4f
> 9b48
> >
> 6d8%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C63640800113875
> 1301&sd
> >
> ata=4DNDTyIcHpTIU60K7FM%2F1zuASSB1IdZDRyOaiVp1Y%2BY%3D&reserved=
> 0
> > e_gdb_documentation_&d=DwIFAg&c=jf_iaSHvJObTbx-
> siA1ZOg&r=4TYe4Npql
> > gVi0ArYpZ76FrWp7IEw8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwuuryoN7QPg9N-
> 6a
> > TY_jEvDZtMZR0o&s=JdkMMjGGl-
> 3Z3BGnjCkOFP5lI5BIbRNBxH4EVI70YFc&e= > .
> > For help, type "help".
> > Type "apropos word" to search for commands related to "word"...
> > Reading symbols from
> > examples/multi_process/simple_mp/build/simple_mp...done.
> > (gdb) r
> > Starting program:
> > /home/xueming/mlnx-
> dpdk.org/examples/multi_process/simple_mp/build/sim
> > ple_mp -n 4 -w 0:0.0 --proc-type=secondary -l 3-4 --socket-mem
> > 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
> > [Thread debugging using libthread_db enabled] Using host libthread_db
> library
> > "/lib/powerpc64le-linux-gnu/libthread_db.so.1".
> > EAL: Detected 144 lcore(s)
> > EAL: Probing VFIO support...
> > [New Thread 0x7ffff7a6eff0 (LWP 58811)] [New Thread 0x7ffff726eff0
> > (LWP 58812)]
> >
> > Thread 1 "simple_mp" received signal SIGSEGV, Segmentation fault.
> > 0x00007ffff7d2f3ec in ?? () from /lib/powerpc64le-linux-gnu/libc.so.6
> >  (gdb) bt full
> > #0  0x00007ffff7d2f3ec in ?? () from
> > /lib/powerpc64le-linux-gnu/libc.so.6
> > No symbol table info available.
> > #1  0x0000000010077d54 in rte_ring_lookup (name=0x102a4e28
> > "PRI_2_SEC")
> >     at /home/xueming/mlnx-dpdk.org/lib/librte_ring/rte_ring.c:326
> >         te = 0x7ef3eefd5e00
> >         r = 0x0
> >         ring_list = 0x7ffff7aa250c
> > #2  0x0000000010032640 in main (argc=10, argv=0x7ffffffff3e8)
> >     at
> > /home/xueming/mlnx-
> dpdk.org/examples/multi_process/simple_mp/main.c:12
> > 8
> >         flags = 0
> >         ring_size = 64
> >         pool_size = 1024
> >         pool_cache = 32
> >         priv_data_sz = 0
> >         ret = 9
> >         lcore_id = 32767
> >         cl = 0x7ffff7fef718 <_dl_argv>
> > (gdb) f 1
> > #1  0x0000000010077d54 in rte_ring_lookup (name=0x102a4e28
> > "PRI_2_SEC")
> >     at /home/xueming/mlnx-dpdk.org/lib/librte_ring/rte_ring.c:326
> > 326                     if (strncmp(name, r->name,
> > RTE_RING_NAMESIZE) == 0)
> > (gdb) l
> > 321
> > 322             rte_rwlock_read_lock(RTE_EAL_TAILQ_RWLOCK);
> > 323
> > 324             TAILQ_FOREACH(te, ring_list, next) {
> > 325                     r = (struct rte_ring *) te->data;
> > 326                     if (strncmp(name, r->name,
> > RTE_RING_NAMESIZE) == 0)
> > 327                             break;
> > 328             }
> > 329
> > 330             rte_rwlock_read_unlock(RTE_EAL_TAILQ_RWLOCK);
> > (gdb) p *te
> > $1 = {next = {tqe_next = 0x0, tqe_prev = 0x0}, data = 0x0}
> > (gdb) p *ring_list
> > $2 = {tqh_first = 0x7ef3eefd5e00, tqh_last = 0x7ef3eec6d100}
> >
> > # uname -a
> > Linux dragon-power-01 4.13.0-rc2 #1 SMP Tue Aug 29 17:27:05 IDT 2017
> > ppc64le ppc64le ppc64le GNU/Linux
> >
> > # cat /etc/issue
> > Ubuntu 16.04.2 LTS \n \l
> >
> > # gcc --version
> > gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 Copyright (C)
> > 2015 Free Software Foundation, Inc.
> > This is free software; see the source for copying conditions.  There
> > is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
> > PARTICULAR PURPOSE.
> >
> > # lscpu
> > Architecture:          ppc64le
> > Byte Order:            Little Endian
> > CPU(s):                144
> > On-line CPU(s) list:   0-87,96-103,112-159
> > Thread(s) per core:    8
> > Core(s) per socket:    4
> > Socket(s):             4
> > NUMA node(s):          4
> > Model:                 2.1 (pvr 004b 0201)
> > Model name:            POWER8E (raw), altivec supported
> > CPU max MHz:           3690.0000
> > CPU min MHz:           2061.0000
> > L1d cache:             64K
> > L1i cache:             32K
> > L2 cache:              512K
> > L3 cache:              8192K
> > NUMA node0 CPU(s):     0-39
> > NUMA node1 CPU(s):     40-79
> > NUMA node16 CPU(s):    80-87,96-103,112-119
> > NUMA node17 CPU(s):    120-159
> >
> > # cat build/.config
> > # RTE_EXEC_ENV values are the directories in mk/exec-env/
> > CONFIG_RTE_EXEC_ENV="linuxapp"
> > # RTE_ARCH values are architecture we compile for. directories in
> > mk/arch/ CONFIG_RTE_ARCH="ppc_64"
> > # machine can define specific variables or action for a specific board
> > # RTE_MACHINE values are architecture we compile for. directories in
> > mk/machine/ CONFIG_RTE_MACHINE="power8"
> > # The compiler we use.
> > # RTE_TOOLCHAIN values are architecture we compile for. directories in
> > mk/toolchain/ CONFIG_RTE_TOOLCHAIN="gcc"
> > # Use intrinsics or assembly code for key routines
> > CONFIG_RTE_FORCE_INTRINSICS=n # Machine forces strict alignment
> > constraints.
> > CONFIG_RTE_ARCH_STRICT_ALIGN=n
> > # Compile to share library
> > CONFIG_RTE_BUILD_SHARED_LIB=n
> > # Use newest code breaking previous ABI CONFIG_RTE_NEXT_ABI=y # Major
> > ABI to overwrite library specific LIBABIVER CONFIG_RTE_MAJOR_ABI= #
> > Machine's cache line size
> > CONFIG_RTE_CACHE_LINE_SIZE=128
> > # Compile Environment Abstraction Layer CONFIG_RTE_LIBRTE_EAL=y
> > CONFIG_RTE_MAX_LCORE=256
> > CONFIG_RTE_MAX_NUMA_NODES=32
> > CONFIG_RTE_MAX_MEMSEG=256
> > CONFIG_RTE_MAX_MEMZONE=2560
> > CONFIG_RTE_MAX_TAILQ=32
> > CONFIG_RTE_LOG_LEVEL=RTE_LOG_INFO
> > CONFIG_RTE_LOG_DP_LEVEL=RTE_LOG_INFO
> > CONFIG_RTE_LOG_HISTORY=256
> > CONFIG_RTE_BACKTRACE=y
> > CONFIG_RTE_LIBEAL_USE_HPET=n
> > CONFIG_RTE_EAL_ALLOW_INV_SOCKET_ID=n
> > CONFIG_RTE_EAL_ALWAYS_PANIC_ON_ERROR=n
> > CONFIG_RTE_EAL_IGB_UIO=y
> > CONFIG_RTE_EAL_VFIO=y
> > CONFIG_RTE_MALLOC_DEBUG=n
> > CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=y
> > # Recognize/ignore architecture we compile for. AVX/AVX512 CPU flags
> > for performance/power testing.
> > # AVX512 is marked as experimental for now, will enable it after
> > enough #
> field
> > test and possible optimization.
> > CONFIG_RTE_ENABLE_AVX=y
> > CONFIG_RTE_ENABLE_AVX512=n
> > # Default driver path (or "" to disable) CONFIG_RTE_EAL_PMD_PATH=""
> > # Compile Environment Abstraction Layer to support Vmware TSC map
> > CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=n
> > # Compile architecture we compile for. argument parser library
> > CONFIG_RTE_LIBRTE_KVARGS=y # Compile generic ethernet library
> > CONFIG_RTE_LIBRTE_ETHER=y CONFIG_RTE_LIBRTE_ETHDEV_DEBUG=n
> > CONFIG_RTE_MAX_ETHPORTS=32
> > CONFIG_RTE_MAX_QUEUES_PER_PORT=1024
> > CONFIG_RTE_LIBRTE_IEEE1588=n
> > CONFIG_RTE_ETHDEV_QUEUE_STAT_CNTRS=16
> > CONFIG_RTE_ETHDEV_RXTX_CALLBACKS=y
> > # Turn off Tx preparation stage
> > # Warning: rte_eth_tx_prepare() can be safely disabled only if using a
> > #
> driver
> > which do not implement any Tx preparation.
> > CONFIG_RTE_ETHDEV_TX_PREPARE_NOOP=n
> > # Compile burst-oriented Amazon ENA PMD driver
> > CONFIG_RTE_LIBRTE_ENA_PMD=y CONFIG_RTE_LIBRTE_ENA_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_ENA_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_ENA_DEBUG_TX_FREE=n
> > CONFIG_RTE_LIBRTE_ENA_DEBUG_DRIVER=n
> > CONFIG_RTE_LIBRTE_ENA_COM_DEBUG=n
> > # Compile burst-oriented IGB & EM PMD drivers
> > CONFIG_RTE_LIBRTE_EM_PMD=y CONFIG_RTE_LIBRTE_IGB_PMD=y
> > CONFIG_RTE_LIBRTE_E1000_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_E1000_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_E1000_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_E1000_DEBUG_TX_FREE=n
> > CONFIG_RTE_LIBRTE_E1000_DEBUG_DRIVER=n
> > CONFIG_RTE_LIBRTE_E1000_PF_DISABLE_STRIP_CRC=n
> > # Compile burst-oriented IXGBE PMD driver
> > CONFIG_RTE_LIBRTE_IXGBE_PMD=n
> CONFIG_RTE_LIBRTE_IXGBE_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_IXGBE_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX_FREE=n
> > CONFIG_RTE_LIBRTE_IXGBE_DEBUG_DRIVER=n
> > CONFIG_RTE_LIBRTE_IXGBE_PF_DISABLE_STRIP_CRC=n
> > CONFIG_RTE_IXGBE_INC_VECTOR=y
> > CONFIG_RTE_LIBRTE_IXGBE_BYPASS=n
> > # Compile burst-oriented I40E PMD driver CONFIG_RTE_LIBRTE_I40E_PMD=y
> > CONFIG_RTE_LIBRTE_I40E_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_I40E_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_I40E_DEBUG_TX_FREE=n
> > CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC=y
> > CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=y
> > CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n
> > CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF=64
> > CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VF=4
> > CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM=4
> > # interval up to 8160 us, aligned to 2 (or default value)
> > CONFIG_RTE_LIBRTE_I40E_ITR_INTERVAL=-1
> > # Compile burst-oriented FM10K PMD
> > CONFIG_RTE_LIBRTE_FM10K_PMD=n
> > CONFIG_RTE_LIBRTE_FM10K_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_FM10K_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX_FREE=n
> > CONFIG_RTE_LIBRTE_FM10K_DEBUG_DRIVER=n
> > CONFIG_RTE_LIBRTE_FM10K_RX_OLFLAGS_ENABLE=y
> > CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=y
> > # Compile burst-oriented Mellanox ConnectX-3 (MLX4) PMD
> > CONFIG_RTE_LIBRTE_MLX4_PMD=n CONFIG_RTE_LIBRTE_MLX4_DEBUG=n
> > CONFIG_RTE_LIBRTE_MLX4_DEBUG_BROKEN_VERBS=n
> > CONFIG_RTE_LIBRTE_MLX4_SGE_WR_N=4
> > CONFIG_RTE_LIBRTE_MLX4_MAX_INLINE=0
> > CONFIG_RTE_LIBRTE_MLX4_TX_MP_CACHE=8
> > CONFIG_RTE_LIBRTE_MLX4_SOFT_COUNTERS=1
> > # Compile burst-oriented Mellanox ConnectX-4 & ConnectX-5 (MLX5) PMD
> > CONFIG_RTE_LIBRTE_MLX5_PMD=y CONFIG_RTE_LIBRTE_MLX5_DEBUG=n
> > CONFIG_RTE_LIBRTE_MLX5_TX_MP_CACHE=8
> > # Compile burst-oriented Broadcom PMD driver
> > CONFIG_RTE_LIBRTE_BNX2X_PMD=n CONFIG_RTE_LIBRTE_BNX2X_DEBUG=n
> > CONFIG_RTE_LIBRTE_BNX2X_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_BNX2X_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_BNX2X_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_BNX2X_MF_SUPPORT=n
> > CONFIG_RTE_LIBRTE_BNX2X_DEBUG_PERIODIC=n
> > # Compile burst-oriented Chelsio Terminator (CXGBE) PMD
> > CONFIG_RTE_LIBRTE_CXGBE_PMD=y
> CONFIG_RTE_LIBRTE_CXGBE_DEBUG=n
> > CONFIG_RTE_LIBRTE_CXGBE_DEBUG_REG=n
> > CONFIG_RTE_LIBRTE_CXGBE_DEBUG_MBOX=n
> > CONFIG_RTE_LIBRTE_CXGBE_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_CXGBE_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_CXGBE_TPUT=y
> > # Compile burst-oriented Cisco ENIC PMD driver
> > CONFIG_RTE_LIBRTE_ENIC_PMD=n CONFIG_RTE_LIBRTE_ENIC_DEBUG=n
> > CONFIG_RTE_LIBRTE_ENIC_DEBUG_FLOW=n
> > # Compile burst-oriented Netronome NFP PMD driver
> > CONFIG_RTE_LIBRTE_NFP_PMD=y CONFIG_RTE_LIBRTE_NFP_DEBUG=n #
> Compile
> > burst-oriented Broadcom BNXT PMD driver
> CONFIG_RTE_LIBRTE_BNXT_PMD=y #
> > Compile burst-oriented Solarflare libefx-based PMD
> > CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n
> CONFIG_RTE_LIBRTE_SFC_EFX_DEBUG=n #
> > Compile software PMD backed by
> > SZEDATA2 device CONFIG_RTE_LIBRTE_PMD_SZEDATA2=n # Defines
> firmware
> > type address space.
> > # See documentation for supported values.
> > # Other values raise compile time error.
> > CONFIG_RTE_LIBRTE_PMD_SZEDATA2_AS=0
> > # Compile burst-oriented Cavium Thunderx NICVF PMD driver
> > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD=y
> > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_DRIVER=n
> > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_MBOX=n
> > # Compile burst-oriented Cavium LiquidIO PMD driver
> > CONFIG_RTE_LIBRTE_LIO_PMD=y
> CONFIG_RTE_LIBRTE_LIO_DEBUG_DRIVER=n
> > CONFIG_RTE_LIBRTE_LIO_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_LIO_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_LIO_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_LIO_DEBUG_MBOX=n
> > CONFIG_RTE_LIBRTE_LIO_DEBUG_REGS=n
> > # Compile NXP DPAA2 FSL-MC Bus
> > CONFIG_RTE_LIBRTE_FSLMC_BUS=n
> > # Compile Support Libraries for NXP DPAA2
> > CONFIG_RTE_LIBRTE_DPAA2_MEMPOOL=n
> > CONFIG_RTE_LIBRTE_DPAA2_USE_PHYS_IOVA=y
> > # Compile burst-oriented NXP DPAA2 PMD driver
> > CONFIG_RTE_LIBRTE_DPAA2_PMD=n
> CONFIG_RTE_LIBRTE_DPAA2_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_DPAA2_DEBUG_DRIVER=n
> > CONFIG_RTE_LIBRTE_DPAA2_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX_FREE=n
> > # Compile burst-oriented VIRTIO PMD driver
> > CONFIG_RTE_LIBRTE_VIRTIO_PMD=y
> CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DRIVER=n
> > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DUMP=n
> > # Compile virtio device emulation inside virtio PMD driver
> > CONFIG_RTE_VIRTIO_USER=y # Compile burst-oriented VMXNET3 PMD
> driver
> > CONFIG_RTE_LIBRTE_VMXNET3_PMD=n
> CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX_FREE=n
> > CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_DRIVER=n
> > # Compile example software rings based PMD
> > CONFIG_RTE_LIBRTE_PMD_RING=y
> > CONFIG_RTE_PMD_RING_MAX_RX_RINGS=16
> > CONFIG_RTE_PMD_RING_MAX_TX_RINGS=16
> > # Compile software PMD backed by PCAP files
> > CONFIG_RTE_LIBRTE_PMD_PCAP=n # Compile link bonding PMD library
> > CONFIG_RTE_LIBRTE_PMD_BOND=y
> CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB=n
> > CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n
> > # QLogic 10G/25G/40G/50G/100G PMD
> > CONFIG_RTE_LIBRTE_QEDE_PMD=y
> > CONFIG_RTE_LIBRTE_QEDE_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_QEDE_DEBUG_INFO=n
> > CONFIG_RTE_LIBRTE_QEDE_DEBUG_DRIVER=n
> > CONFIG_RTE_LIBRTE_QEDE_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_QEDE_DEBUG_RX=n
> > #Provides abs path/name of architecture we compile for. firmware file.
> > #Empty string denotes driver will use default firmware
> > CONFIG_RTE_LIBRTE_QEDE_FW=""
> > # Compile software PMD backed by AF_PACKET sockets (Linux only)
> > CONFIG_RTE_LIBRTE_PMD_AF_PACKET=y # Compile ARK PMD
> > CONFIG_RTE_LIBRTE_ARK_PMD=y CONFIG_RTE_LIBRTE_ARK_PAD_TX=y
> > CONFIG_RTE_LIBRTE_ARK_DEBUG_RX=n
> CONFIG_RTE_LIBRTE_ARK_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_ARK_DEBUG_STATS=n
> > CONFIG_RTE_LIBRTE_ARK_DEBUG_TRACE=n
> > # Compile WRS accelerated virtual port (AVP) guest PMD driver
> > CONFIG_RTE_LIBRTE_AVP_PMD=n CONFIG_RTE_LIBRTE_AVP_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_AVP_DEBUG_TX=n
> CONFIG_RTE_LIBRTE_AVP_DEBUG_DRIVER=y
> > CONFIG_RTE_LIBRTE_AVP_DEBUG_BUFFERS=n
> > # Compile architecture we compile for. TAP PMD # It is enabled by
> > default
> for
> > Linux only.
> > CONFIG_RTE_LIBRTE_PMD_TAP=y
> > # Compile Xen PMD
> > CONFIG_RTE_LIBRTE_PMD_XENVIRT=n
> > # Compile null PMD
> > CONFIG_RTE_LIBRTE_PMD_NULL=y
> > # Compile fail-safe PMD
> > CONFIG_RTE_LIBRTE_PMD_FAILSAFE=y
> > # Do prefetch of packet data within PMD driver receive function
> > CONFIG_RTE_PMD_PACKET_PREFETCH=y # Compile generic crypto device
> > library CONFIG_RTE_LIBRTE_CRYPTODEV=y
> > CONFIG_RTE_LIBRTE_CRYPTODEV_DEBUG=n
> > CONFIG_RTE_CRYPTO_MAX_DEVS=64
> > CONFIG_RTE_CRYPTODEV_NAME_LEN=64
> > # Compile PMD for ARMv8 Crypto device
> > CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO=n
> > CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO_DEBUG=n
> > # Compile NXP DPAA2 crypto sec driver for CAAM HW
> > CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC=n
> > CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_DRIVER=n
> > CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_RX=n
> > # Compile PMD for QuickAssist based devices
> > CONFIG_RTE_LIBRTE_PMD_QAT=n
> CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_INIT=n
> > CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_DRIVER=n
> > # Number of sessions to create in architecture we compile for. session
> memory
> > pool # on a single QuickAssist device.
> > CONFIG_RTE_QAT_PMD_MAX_NB_SESSIONS=2048
> > # Compile PMD for AESNI backed device
> > CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n
> > CONFIG_RTE_LIBRTE_PMD_AESNI_MB_DEBUG=n
> > # Compile PMD for Software backed device
> > CONFIG_RTE_LIBRTE_PMD_OPENSSL=n
> CONFIG_RTE_LIBRTE_PMD_OPENSSL_DEBUG=n
> > # Compile PMD for AESNI GCM device
> > CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=n
> > CONFIG_RTE_LIBRTE_PMD_AESNI_GCM_DEBUG=n
> > # Compile PMD for SNOW 3G device
> > CONFIG_RTE_LIBRTE_PMD_SNOW3G=n
> > CONFIG_RTE_LIBRTE_PMD_SNOW3G_DEBUG=n
> > # Compile PMD for KASUMI device
> > CONFIG_RTE_LIBRTE_PMD_KASUMI=n
> > CONFIG_RTE_LIBRTE_PMD_KASUMI_DEBUG=n
> > # Compile PMD for ZUC device
> > CONFIG_RTE_LIBRTE_PMD_ZUC=n
> > CONFIG_RTE_LIBRTE_PMD_ZUC_DEBUG=n
> > # Compile PMD for Crypto Scheduler device
> > CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER=y
> > CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER_DEBUG=n
> > # Compile PMD for NULL Crypto device
> > CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO=y
> > # Compile generic event device library CONFIG_RTE_LIBRTE_EVENTDEV=y
> > CONFIG_RTE_LIBRTE_EVENTDEV_DEBUG=n
> > CONFIG_RTE_EVENT_MAX_DEVS=16
> > CONFIG_RTE_EVENT_MAX_QUEUES_PER_DEV=64
> > # Compile PMD for skeleton event device
> > CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV=y
> > CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV_DEBUG=n
> > # Compile PMD for software event device
> > CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV=y
> > CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV_DEBUG=n
> > # Compile PMD for octeontx sso event device
> > CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF=y
> > CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF_DEBUG=n
> > # Compile librte_ring
> > CONFIG_RTE_LIBRTE_RING=y
> > # Compile librte_mempool
> > CONFIG_RTE_LIBRTE_MEMPOOL=y
> > CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512
> > CONFIG_RTE_LIBRTE_MEMPOOL_DEBUG=n
> > # Compile Mempool drivers
> > CONFIG_RTE_DRIVER_MEMPOOL_RING=y
> > CONFIG_RTE_DRIVER_MEMPOOL_STACK=y
> > # Compile librte_mbuf
> > CONFIG_RTE_LIBRTE_MBUF=y
> > CONFIG_RTE_LIBRTE_MBUF_DEBUG=n
> > CONFIG_RTE_MBUF_DEFAULT_MEMPOOL_OPS="ring_mp_mc"
> > CONFIG_RTE_MBUF_REFCNT_ATOMIC=y
> > CONFIG_RTE_PKTMBUF_HEADROOM=128
> > # Compile librte_timer
> > CONFIG_RTE_LIBRTE_TIMER=y
> > CONFIG_RTE_LIBRTE_TIMER_DEBUG=n
> > # Compile librte_cfgfile
> > CONFIG_RTE_LIBRTE_CFGFILE=y
> > # Compile librte_cmdline
> > CONFIG_RTE_LIBRTE_CMDLINE=y
> > CONFIG_RTE_LIBRTE_CMDLINE_DEBUG=n
> > # Compile librte_hash
> > CONFIG_RTE_LIBRTE_HASH=y
> > CONFIG_RTE_LIBRTE_HASH_DEBUG=n
> > # Compile librte_efd
> > CONFIG_RTE_LIBRTE_EFD=y
> > # Compile librte_jobstats
> > CONFIG_RTE_LIBRTE_JOBSTATS=y
> > # Compile architecture we compile for. device metrics library
> > CONFIG_RTE_LIBRTE_METRICS=y # Compile architecture we compile for.
> > bitrate statistics library CONFIG_RTE_LIBRTE_BITRATE=y # Compile
> > architecture we compile for. latency statistics library
> > CONFIG_RTE_LIBRTE_LATENCY_STATS=y # Compile librte_lpm
> > CONFIG_RTE_LIBRTE_LPM=y CONFIG_RTE_LIBRTE_LPM_DEBUG=n #
> Compile
> > librte_acl CONFIG_RTE_LIBRTE_ACL=y CONFIG_RTE_LIBRTE_ACL_DEBUG=n
> #
> > Compile librte_power CONFIG_RTE_LIBRTE_POWER=y
> > CONFIG_RTE_LIBRTE_POWER_DEBUG=n
> > CONFIG_RTE_MAX_LCORE_FREQS=64
> > # Compile librte_net
> > CONFIG_RTE_LIBRTE_NET=y
> > # Compile librte_ip_frag
> > CONFIG_RTE_LIBRTE_IP_FRAG=y
> > CONFIG_RTE_LIBRTE_IP_FRAG_DEBUG=n
> > CONFIG_RTE_LIBRTE_IP_FRAG_MAX_FRAG=4
> > CONFIG_RTE_LIBRTE_IP_FRAG_TBL_STAT=n
> > # Compile GRO library
> > CONFIG_RTE_LIBRTE_GRO=y
> > # Compile librte_meter
> > CONFIG_RTE_LIBRTE_METER=y
> > # Compile librte_sched
> > CONFIG_RTE_LIBRTE_SCHED=y
> > CONFIG_RTE_SCHED_DEBUG=n
> > CONFIG_RTE_SCHED_RED=n
> > CONFIG_RTE_SCHED_COLLECT_STATS=n
> > CONFIG_RTE_SCHED_SUBPORT_TC_OV=n
> > CONFIG_RTE_SCHED_PORT_N_GRINDERS=8
> > CONFIG_RTE_SCHED_VECTOR=n
> > # Compile architecture we compile for. distributor library
> > CONFIG_RTE_LIBRTE_DISTRIBUTOR=y # Compile architecture we compile for.
> > reorder library CONFIG_RTE_LIBRTE_REORDER=y # Compile librte_port
> > CONFIG_RTE_LIBRTE_PORT=y CONFIG_RTE_PORT_STATS_COLLECT=n
> > CONFIG_RTE_PORT_PCAP=n # Compile librte_table
> > CONFIG_RTE_LIBRTE_TABLE=y CONFIG_RTE_TABLE_STATS_COLLECT=n #
> Compile
> > librte_pipeline CONFIG_RTE_LIBRTE_PIPELINE=y
> > CONFIG_RTE_PIPELINE_STATS_COLLECT=n
> > # Compile librte_kni
> > CONFIG_RTE_LIBRTE_KNI=y
> > CONFIG_RTE_LIBRTE_PMD_KNI=y
> > CONFIG_RTE_KNI_KMOD=y
> > CONFIG_RTE_KNI_KMOD_ETHTOOL=n
> > CONFIG_RTE_KNI_PREEMPT_DEFAULT=y
> > # Compile architecture we compile for. pdump library
> > CONFIG_RTE_LIBRTE_PDUMP=y # Compile vhost user library
> > CONFIG_RTE_LIBRTE_VHOST=y CONFIG_RTE_LIBRTE_VHOST_NUMA=y
> > CONFIG_RTE_LIBRTE_VHOST_DEBUG=n # Compile vhost PMD # To compile,
> > CONFIG_RTE_LIBRTE_VHOST should be enabled.
> > CONFIG_RTE_LIBRTE_PMD_VHOST=y
> > #Compile Xen domain0 support
> > CONFIG_RTE_LIBRTE_XEN_DOM0=n
> > # Compile architecture we compile for. test application
> > CONFIG_RTE_APP_TEST=y CONFIG_RTE_APP_TEST_RESOURCE_TAR=n
> > # Compile architecture we compile for. PMD test application
> > CONFIG_RTE_TEST_PMD=y
> CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES=n
> > CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS=n
> > # Compile architecture we compile for. crypto performance application
> > CONFIG_RTE_APP_CRYPTO_PERF=y # Compile architecture we compile for.
> > eventdev application CONFIG_RTE_APP_EVENTDEV=y
> > CONFIG_RTE_EXEC_ENV_LINUXAPP=y CONFIG_RTE_ARCH_PPC_64=y
> > CONFIG_RTE_ARCH_64=y CONFIG_RTE_TOOLCHAIN_GCC=y # Note: Power
> doesn't
> > have this support # Note: Initially, all of architecture we
> compile for.
> > PMD drivers compilation are turned off on Power # Will turn on them
> > only
> after
> > architecture we compile for. successful testing on Power
> >
> > Please refer here for more information on running DPDK multi-process
> > examples:
> >
> > https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Furl
> > defense.proofpoint.com%2Fv2%2Furl%3Fu%3Dhttp-
> 3A__dpdk.org_doc_guides_s
> >
> &data=02%7C01%7Cxuemingl%40mellanox.com%7C9cd11fda7a7f48df7cbd08d
> 4f9b4
> >
> 86d8%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C6364080011387
> 51301&s
> > data=4n76ha0PmSr3wP2c0MAo3PEVYRMKjJVcU9o5xETqhBc%3D&reserved=0
> > ample-5Fapp-5Fug_multi-5Fprocess.html&d=DwIFAg&c=jf_iaSHvJObTbx-
> siA1Z
> >
> Og&r=4TYe4NpqlgVi0ArYpZ76FrWp7IEw8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwu
> > uryoN7QPg9N-6aTY_jEvDZtMZR0o&s=gupwe5WWQ-
> ap2jObFko6UJymrcy4jTmF
> > 2r1dZ2fQN9E&e=
> >
> > Best Regards,
> > Xueming
> 


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [dpdk-dev] multi-process shared memory on PPC
  2017-09-12  8:12   ` Xueming(Steven) Li
@ 2017-09-12 18:11     ` Xueming(Steven) Li
  2017-09-13  8:56       ` Xueming(Steven) Li
  0 siblings, 1 reply; 7+ messages in thread
From: Xueming(Steven) Li @ 2017-09-12 18:11 UTC (permalink / raw)
  To: Xueming(Steven) Li, Chao Zhu; +Cc: dev

It works for me after setting nr_overcommit_hugepages correctly, thanks again.

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Xueming(Steven) Li
> Sent: Tuesday, September 12, 2017 4:13 PM
> To: Chao Zhu <chaozhu@linux.vnet.ibm.com>
> Cc: dev@dpdk.org
> Subject: Re: [dpdk-dev] multi-process shared memory on PPC
> 
> Great, that might be something missing, will update later. Thanks!
> 
> > -----Original Message-----
> > From: Chao Zhu [mailto:chaozhu@linux.vnet.ibm.com]
> > Sent: Tuesday, September 12, 2017 4:02 PM
> > To: Xueming(Steven) Li <xuemingl@mellanox.com>
> > Cc: dev@dpdk.org
> > Subject: RE: multi-process shared memory on PPC
> >
> > Xueming,
> >
> > I tried it on my local server, it works fine.
> > Did you set this value
> > "/sys/kernel/mm/hugepages/hugepages-
> 16384kB/nr_overcommit_hugepages" ?
> > It should be the same value as "
> > /sys/kernel/mm/hugepages/hugepages-16384kB/nr_hugepages" on ppc64le.
> >
> > > -----Original Message-----
> > > From: Xueming(Steven) Li [mailto:xuemingl@mellanox.com]
> > > Sent: 2017年8月31日 22:40
> > > To: Chao Zhu <chaozhu@linux.vnet.ibm.com>
> > > Cc: dev@dpdk.org
> > > Subject: multi-process shared memory on PPC
> > >
> > > Hi all,
> > >
> > > I'm testing multi-process example on PowerPC system, looks like
> > > shared memory not working properly.
> > > Below are the error and debug info of the first multi-process
> > > example 'simple_mp' (works as expected on X86):
> > >
> > > // Build DPDK, master branch
> > > # make T=ppc_64-power8-linuxapp-gcc -j160 -C
> > > examples/multi_process/simple_mp/ #
> > > examples/multi_process/simple_mp/build/simple_mp  -w 0:0.0
> > > --proc-type=primary -l 1-2 --socket-mem
> > > 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
> > > APP: Finished Process Init.
> > > Starting core 2
> > > simple_mp >
> > >
> > > // Open another terminal and run secondary process # gdb --args
> > > examples/multi_process/simple_mp/build/simple_mp -n 4 -w 0:0.0
> > > --proc-type=secondary -l 3-4 --socket-mem
> > > 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
> > > GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1 Copyright (C) 2016
> > > Free Software Foundation, Inc.
> > > License GPLv3+: GNU GPL version 3 or later
> > >
> > <https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fur
> > ldef
> > ense.proofpoint.com%2Fv2%2Furl%3Fu%3Dhttp-
> >
> 3A__gnu.org_licenses_gpl&data=02%7C01%7Cxuemingl%40mellanox.com%7C
> >
> 9cd11fda7a7f48df7cbd08d4f9b486d8%7Ca652971c7d2e4d9ba6a4d149256f461
> >
> b%7C0%7C0%7C636408001138751301&sdata=bb3hwYz7ehCqt4QA6GGqTDMY
> > kY1qAJV%2BCMDBVbXmWzE%3D&reserved=0.
> > h
> > > tml&d=DwIFAg&c=jf_iaSHvJObTbx-
> > siA1ZOg&r=4TYe4NpqlgVi0ArYpZ76FrWp7IE
> > > w8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwuuryoN7QPg9N-
> 6aTY_jEvDZtMZR0o&s
> > > =SbDQBN7qJ9z8fWCSePyvm5FFncp2P_9XZm-qs1lH5PE&e= > This is free
> > > software: you are free to change and redistribute it.
> > > There is NO WARRANTY, to the extent permitted by law.  Type "show
> > copying"
> > > and "show warranty" for details.
> > > This GDB was configured as "powerpc64le-linux-gnu".
> > > Type "show configuration" for configuration details.
> > > For bug reporting instructions, please see:
> > > <https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2F
> > > ur
> > > ldefense.proofpoint.com%2Fv2%2Furl%3Fu%3Dhttp-
> > 3A__www.gnu.org_softwar&
> > >
> >
> data=02%7C01%7Cxuemingl%40mellanox.com%7C9cd11fda7a7f48df7cbd08d4f
> > 9b48
> > >
> >
> 6d8%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C63640800113875
> > 1301&sd
> > >
> >
> ata=4DNDTyIcHpTIU60K7FM%2F1zuASSB1IdZDRyOaiVp1Y%2BY%3D&reserved=
> > 0
> > > e_gdb_bugs_&d=DwIFAg&c=jf_iaSHvJObTbx-
> > siA1ZOg&r=4TYe4NpqlgVi0ArYpZ
> > > 76FrWp7IEw8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwuuryoN7QPg9N-
> > 6aTY_jEvDZt
> > > MZR0o&s=GAFKK3jSahAPFXMGcPGbVNTl0CesJy_qfs5TxXfGOX0&e= >.
> > > Find the GDB manual and other documentation resources online at:
> > > <https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2F
> > > ur
> > > ldefense.proofpoint.com%2Fv2%2Furl%3Fu%3Dhttp-
> > 3A__www.gnu.org_softwar&
> > >
> >
> data=02%7C01%7Cxuemingl%40mellanox.com%7C9cd11fda7a7f48df7cbd08d4f
> > 9b48
> > >
> >
> 6d8%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C63640800113875
> > 1301&sd
> > >
> >
> ata=4DNDTyIcHpTIU60K7FM%2F1zuASSB1IdZDRyOaiVp1Y%2BY%3D&reserved=
> > 0
> > > e_gdb_documentation_&d=DwIFAg&c=jf_iaSHvJObTbx-
> > siA1ZOg&r=4TYe4Npql
> > >
> gVi0ArYpZ76FrWp7IEw8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwuuryoN7QPg9N-
> > 6a
> > > TY_jEvDZtMZR0o&s=JdkMMjGGl-
> > 3Z3BGnjCkOFP5lI5BIbRNBxH4EVI70YFc&e= > .
> > > For help, type "help".
> > > Type "apropos word" to search for commands related to "word"...
> > > Reading symbols from
> > > examples/multi_process/simple_mp/build/simple_mp...done.
> > > (gdb) r
> > > Starting program:
> > > /home/xueming/mlnx-
> > dpdk.org/examples/multi_process/simple_mp/build/sim
> > > ple_mp -n 4 -w 0:0.0 --proc-type=secondary -l 3-4 --socket-mem
> > > 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
> > > [Thread debugging using libthread_db enabled] Using host
> > > libthread_db
> > library
> > > "/lib/powerpc64le-linux-gnu/libthread_db.so.1".
> > > EAL: Detected 144 lcore(s)
> > > EAL: Probing VFIO support...
> > > [New Thread 0x7ffff7a6eff0 (LWP 58811)] [New Thread 0x7ffff726eff0
> > > (LWP 58812)]
> > >
> > > Thread 1 "simple_mp" received signal SIGSEGV, Segmentation fault.
> > > 0x00007ffff7d2f3ec in ?? () from
> > > /lib/powerpc64le-linux-gnu/libc.so.6
> > >  (gdb) bt full
> > > #0  0x00007ffff7d2f3ec in ?? () from
> > > /lib/powerpc64le-linux-gnu/libc.so.6
> > > No symbol table info available.
> > > #1  0x0000000010077d54 in rte_ring_lookup (name=0x102a4e28
> > > "PRI_2_SEC")
> > >     at /home/xueming/mlnx-dpdk.org/lib/librte_ring/rte_ring.c:326
> > >         te = 0x7ef3eefd5e00
> > >         r = 0x0
> > >         ring_list = 0x7ffff7aa250c
> > > #2  0x0000000010032640 in main (argc=10, argv=0x7ffffffff3e8)
> > >     at
> > > /home/xueming/mlnx-
> > dpdk.org/examples/multi_process/simple_mp/main.c:12
> > > 8
> > >         flags = 0
> > >         ring_size = 64
> > >         pool_size = 1024
> > >         pool_cache = 32
> > >         priv_data_sz = 0
> > >         ret = 9
> > >         lcore_id = 32767
> > >         cl = 0x7ffff7fef718 <_dl_argv>
> > > (gdb) f 1
> > > #1  0x0000000010077d54 in rte_ring_lookup (name=0x102a4e28
> > > "PRI_2_SEC")
> > >     at /home/xueming/mlnx-dpdk.org/lib/librte_ring/rte_ring.c:326
> > > 326                     if (strncmp(name, r->name,
> > > RTE_RING_NAMESIZE) == 0)
> > > (gdb) l
> > > 321
> > > 322             rte_rwlock_read_lock(RTE_EAL_TAILQ_RWLOCK);
> > > 323
> > > 324             TAILQ_FOREACH(te, ring_list, next) {
> > > 325                     r = (struct rte_ring *) te->data;
> > > 326                     if (strncmp(name, r->name,
> > > RTE_RING_NAMESIZE) == 0)
> > > 327                             break;
> > > 328             }
> > > 329
> > > 330             rte_rwlock_read_unlock(RTE_EAL_TAILQ_RWLOCK);
> > > (gdb) p *te
> > > $1 = {next = {tqe_next = 0x0, tqe_prev = 0x0}, data = 0x0}
> > > (gdb) p *ring_list
> > > $2 = {tqh_first = 0x7ef3eefd5e00, tqh_last = 0x7ef3eec6d100}
> > >
> > > # uname -a
> > > Linux dragon-power-01 4.13.0-rc2 #1 SMP Tue Aug 29 17:27:05 IDT 2017
> > > ppc64le ppc64le ppc64le GNU/Linux
> > >
> > > # cat /etc/issue
> > > Ubuntu 16.04.2 LTS \n \l
> > >
> > > # gcc --version
> > > gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 Copyright (C)
> > > 2015 Free Software Foundation, Inc.
> > > This is free software; see the source for copying conditions.  There
> > > is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
> > > PARTICULAR PURPOSE.
> > >
> > > # lscpu
> > > Architecture:          ppc64le
> > > Byte Order:            Little Endian
> > > CPU(s):                144
> > > On-line CPU(s) list:   0-87,96-103,112-159
> > > Thread(s) per core:    8
> > > Core(s) per socket:    4
> > > Socket(s):             4
> > > NUMA node(s):          4
> > > Model:                 2.1 (pvr 004b 0201)
> > > Model name:            POWER8E (raw), altivec supported
> > > CPU max MHz:           3690.0000
> > > CPU min MHz:           2061.0000
> > > L1d cache:             64K
> > > L1i cache:             32K
> > > L2 cache:              512K
> > > L3 cache:              8192K
> > > NUMA node0 CPU(s):     0-39
> > > NUMA node1 CPU(s):     40-79
> > > NUMA node16 CPU(s):    80-87,96-103,112-119
> > > NUMA node17 CPU(s):    120-159
> > >
> > > # cat build/.config
> > > # RTE_EXEC_ENV values are the directories in mk/exec-env/
> > > CONFIG_RTE_EXEC_ENV="linuxapp"
> > > # RTE_ARCH values are architecture we compile for. directories in
> > > mk/arch/ CONFIG_RTE_ARCH="ppc_64"
> > > # machine can define specific variables or action for a specific
> > > board # RTE_MACHINE values are architecture we compile for.
> > > directories in mk/machine/ CONFIG_RTE_MACHINE="power8"
> > > # The compiler we use.
> > > # RTE_TOOLCHAIN values are architecture we compile for. directories
> > > in mk/toolchain/ CONFIG_RTE_TOOLCHAIN="gcc"
> > > # Use intrinsics or assembly code for key routines
> > > CONFIG_RTE_FORCE_INTRINSICS=n # Machine forces strict alignment
> > > constraints.
> > > CONFIG_RTE_ARCH_STRICT_ALIGN=n
> > > # Compile to share library
> > > CONFIG_RTE_BUILD_SHARED_LIB=n
> > > # Use newest code breaking previous ABI CONFIG_RTE_NEXT_ABI=y #
> > > Major ABI to overwrite library specific LIBABIVER
> > > CONFIG_RTE_MAJOR_ABI= # Machine's cache line size
> > > CONFIG_RTE_CACHE_LINE_SIZE=128
> > > # Compile Environment Abstraction Layer CONFIG_RTE_LIBRTE_EAL=y
> > > CONFIG_RTE_MAX_LCORE=256
> > > CONFIG_RTE_MAX_NUMA_NODES=32
> > > CONFIG_RTE_MAX_MEMSEG=256
> > > CONFIG_RTE_MAX_MEMZONE=2560
> > > CONFIG_RTE_MAX_TAILQ=32
> > > CONFIG_RTE_LOG_LEVEL=RTE_LOG_INFO
> > > CONFIG_RTE_LOG_DP_LEVEL=RTE_LOG_INFO
> > > CONFIG_RTE_LOG_HISTORY=256
> > > CONFIG_RTE_BACKTRACE=y
> > > CONFIG_RTE_LIBEAL_USE_HPET=n
> > > CONFIG_RTE_EAL_ALLOW_INV_SOCKET_ID=n
> > > CONFIG_RTE_EAL_ALWAYS_PANIC_ON_ERROR=n
> > > CONFIG_RTE_EAL_IGB_UIO=y
> > > CONFIG_RTE_EAL_VFIO=y
> > > CONFIG_RTE_MALLOC_DEBUG=n
> > > CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=y
> > > # Recognize/ignore architecture we compile for. AVX/AVX512 CPU flags
> > > for performance/power testing.
> > > # AVX512 is marked as experimental for now, will enable it after
> > > enough #
> > field
> > > test and possible optimization.
> > > CONFIG_RTE_ENABLE_AVX=y
> > > CONFIG_RTE_ENABLE_AVX512=n
> > > # Default driver path (or "" to disable) CONFIG_RTE_EAL_PMD_PATH=""
> > > # Compile Environment Abstraction Layer to support Vmware TSC map
> > > CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=n
> > > # Compile architecture we compile for. argument parser library
> > > CONFIG_RTE_LIBRTE_KVARGS=y # Compile generic ethernet library
> > > CONFIG_RTE_LIBRTE_ETHER=y CONFIG_RTE_LIBRTE_ETHDEV_DEBUG=n
> > > CONFIG_RTE_MAX_ETHPORTS=32
> > > CONFIG_RTE_MAX_QUEUES_PER_PORT=1024
> > > CONFIG_RTE_LIBRTE_IEEE1588=n
> > > CONFIG_RTE_ETHDEV_QUEUE_STAT_CNTRS=16
> > > CONFIG_RTE_ETHDEV_RXTX_CALLBACKS=y
> > > # Turn off Tx preparation stage
> > > # Warning: rte_eth_tx_prepare() can be safely disabled only if using
> > > a #
> > driver
> > > which do not implement any Tx preparation.
> > > CONFIG_RTE_ETHDEV_TX_PREPARE_NOOP=n
> > > # Compile burst-oriented Amazon ENA PMD driver
> > > CONFIG_RTE_LIBRTE_ENA_PMD=y
> CONFIG_RTE_LIBRTE_ENA_DEBUG_RX=n
> > > CONFIG_RTE_LIBRTE_ENA_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_ENA_DEBUG_TX_FREE=n
> > > CONFIG_RTE_LIBRTE_ENA_DEBUG_DRIVER=n
> > > CONFIG_RTE_LIBRTE_ENA_COM_DEBUG=n
> > > # Compile burst-oriented IGB & EM PMD drivers
> > > CONFIG_RTE_LIBRTE_EM_PMD=y CONFIG_RTE_LIBRTE_IGB_PMD=y
> > > CONFIG_RTE_LIBRTE_E1000_DEBUG_INIT=n
> > > CONFIG_RTE_LIBRTE_E1000_DEBUG_RX=n
> > > CONFIG_RTE_LIBRTE_E1000_DEBUG_TX=n
> > > CONFIG_RTE_LIBRTE_E1000_DEBUG_TX_FREE=n
> > > CONFIG_RTE_LIBRTE_E1000_DEBUG_DRIVER=n
> > > CONFIG_RTE_LIBRTE_E1000_PF_DISABLE_STRIP_CRC=n
> > > # Compile burst-oriented IXGBE PMD driver
> > > CONFIG_RTE_LIBRTE_IXGBE_PMD=n
> > CONFIG_RTE_LIBRTE_IXGBE_DEBUG_INIT=n
> > > CONFIG_RTE_LIBRTE_IXGBE_DEBUG_RX=n
> > > CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX=n
> > > CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX_FREE=n
> > > CONFIG_RTE_LIBRTE_IXGBE_DEBUG_DRIVER=n
> > > CONFIG_RTE_LIBRTE_IXGBE_PF_DISABLE_STRIP_CRC=n
> > > CONFIG_RTE_IXGBE_INC_VECTOR=y
> > > CONFIG_RTE_LIBRTE_IXGBE_BYPASS=n
> > > # Compile burst-oriented I40E PMD driver
> > > CONFIG_RTE_LIBRTE_I40E_PMD=y
> CONFIG_RTE_LIBRTE_I40E_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_I40E_DEBUG_TX=n
> > > CONFIG_RTE_LIBRTE_I40E_DEBUG_TX_FREE=n
> > > CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC=y
> > > CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=y
> > > CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n
> > > CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF=64
> > > CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VF=4
> > > CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM=4
> > > # interval up to 8160 us, aligned to 2 (or default value)
> > > CONFIG_RTE_LIBRTE_I40E_ITR_INTERVAL=-1
> > > # Compile burst-oriented FM10K PMD
> > > CONFIG_RTE_LIBRTE_FM10K_PMD=n
> > > CONFIG_RTE_LIBRTE_FM10K_DEBUG_INIT=n
> > > CONFIG_RTE_LIBRTE_FM10K_DEBUG_RX=n
> > > CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX=n
> > > CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX_FREE=n
> > > CONFIG_RTE_LIBRTE_FM10K_DEBUG_DRIVER=n
> > > CONFIG_RTE_LIBRTE_FM10K_RX_OLFLAGS_ENABLE=y
> > > CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=y
> > > # Compile burst-oriented Mellanox ConnectX-3 (MLX4) PMD
> > > CONFIG_RTE_LIBRTE_MLX4_PMD=n CONFIG_RTE_LIBRTE_MLX4_DEBUG=n
> > > CONFIG_RTE_LIBRTE_MLX4_DEBUG_BROKEN_VERBS=n
> > > CONFIG_RTE_LIBRTE_MLX4_SGE_WR_N=4
> > > CONFIG_RTE_LIBRTE_MLX4_MAX_INLINE=0
> > > CONFIG_RTE_LIBRTE_MLX4_TX_MP_CACHE=8
> > > CONFIG_RTE_LIBRTE_MLX4_SOFT_COUNTERS=1
> > > # Compile burst-oriented Mellanox ConnectX-4 & ConnectX-5 (MLX5) PMD
> > > CONFIG_RTE_LIBRTE_MLX5_PMD=y CONFIG_RTE_LIBRTE_MLX5_DEBUG=n
> > > CONFIG_RTE_LIBRTE_MLX5_TX_MP_CACHE=8
> > > # Compile burst-oriented Broadcom PMD driver
> > > CONFIG_RTE_LIBRTE_BNX2X_PMD=n
> CONFIG_RTE_LIBRTE_BNX2X_DEBUG=n
> > > CONFIG_RTE_LIBRTE_BNX2X_DEBUG_INIT=n
> > > CONFIG_RTE_LIBRTE_BNX2X_DEBUG_RX=n
> > > CONFIG_RTE_LIBRTE_BNX2X_DEBUG_TX=n
> > > CONFIG_RTE_LIBRTE_BNX2X_MF_SUPPORT=n
> > > CONFIG_RTE_LIBRTE_BNX2X_DEBUG_PERIODIC=n
> > > # Compile burst-oriented Chelsio Terminator (CXGBE) PMD
> > > CONFIG_RTE_LIBRTE_CXGBE_PMD=y
> > CONFIG_RTE_LIBRTE_CXGBE_DEBUG=n
> > > CONFIG_RTE_LIBRTE_CXGBE_DEBUG_REG=n
> > > CONFIG_RTE_LIBRTE_CXGBE_DEBUG_MBOX=n
> > > CONFIG_RTE_LIBRTE_CXGBE_DEBUG_TX=n
> > > CONFIG_RTE_LIBRTE_CXGBE_DEBUG_RX=n
> > > CONFIG_RTE_LIBRTE_CXGBE_TPUT=y
> > > # Compile burst-oriented Cisco ENIC PMD driver
> > > CONFIG_RTE_LIBRTE_ENIC_PMD=n CONFIG_RTE_LIBRTE_ENIC_DEBUG=n
> > > CONFIG_RTE_LIBRTE_ENIC_DEBUG_FLOW=n
> > > # Compile burst-oriented Netronome NFP PMD driver
> > > CONFIG_RTE_LIBRTE_NFP_PMD=y CONFIG_RTE_LIBRTE_NFP_DEBUG=n #
> > Compile
> > > burst-oriented Broadcom BNXT PMD driver
> > CONFIG_RTE_LIBRTE_BNXT_PMD=y #
> > > Compile burst-oriented Solarflare libefx-based PMD
> > > CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n
> > CONFIG_RTE_LIBRTE_SFC_EFX_DEBUG=n #
> > > Compile software PMD backed by
> > > SZEDATA2 device CONFIG_RTE_LIBRTE_PMD_SZEDATA2=n # Defines
> > firmware
> > > type address space.
> > > # See documentation for supported values.
> > > # Other values raise compile time error.
> > > CONFIG_RTE_LIBRTE_PMD_SZEDATA2_AS=0
> > > # Compile burst-oriented Cavium Thunderx NICVF PMD driver
> > > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD=y
> > > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_INIT=n
> > > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_RX=n
> > > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_TX=n
> > > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_DRIVER=n
> > > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_MBOX=n
> > > # Compile burst-oriented Cavium LiquidIO PMD driver
> > > CONFIG_RTE_LIBRTE_LIO_PMD=y
> > CONFIG_RTE_LIBRTE_LIO_DEBUG_DRIVER=n
> > > CONFIG_RTE_LIBRTE_LIO_DEBUG_INIT=n
> > > CONFIG_RTE_LIBRTE_LIO_DEBUG_RX=n
> > > CONFIG_RTE_LIBRTE_LIO_DEBUG_TX=n
> > > CONFIG_RTE_LIBRTE_LIO_DEBUG_MBOX=n
> > > CONFIG_RTE_LIBRTE_LIO_DEBUG_REGS=n
> > > # Compile NXP DPAA2 FSL-MC Bus
> > > CONFIG_RTE_LIBRTE_FSLMC_BUS=n
> > > # Compile Support Libraries for NXP DPAA2
> > > CONFIG_RTE_LIBRTE_DPAA2_MEMPOOL=n
> > > CONFIG_RTE_LIBRTE_DPAA2_USE_PHYS_IOVA=y
> > > # Compile burst-oriented NXP DPAA2 PMD driver
> > > CONFIG_RTE_LIBRTE_DPAA2_PMD=n
> > CONFIG_RTE_LIBRTE_DPAA2_DEBUG_INIT=n
> > > CONFIG_RTE_LIBRTE_DPAA2_DEBUG_DRIVER=n
> > > CONFIG_RTE_LIBRTE_DPAA2_DEBUG_RX=n
> > > CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX=n
> > > CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX_FREE=n
> > > # Compile burst-oriented VIRTIO PMD driver
> > > CONFIG_RTE_LIBRTE_VIRTIO_PMD=y
> > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_INIT=n
> > > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_RX=n
> > > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_TX=n
> > > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DRIVER=n
> > > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DUMP=n
> > > # Compile virtio device emulation inside virtio PMD driver
> > > CONFIG_RTE_VIRTIO_USER=y # Compile burst-oriented VMXNET3 PMD
> > driver
> > > CONFIG_RTE_LIBRTE_VMXNET3_PMD=n
> > CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_INIT=n
> > > CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_RX=n
> > > CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX=n
> > > CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX_FREE=n
> > > CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_DRIVER=n
> > > # Compile example software rings based PMD
> > > CONFIG_RTE_LIBRTE_PMD_RING=y
> > > CONFIG_RTE_PMD_RING_MAX_RX_RINGS=16
> > > CONFIG_RTE_PMD_RING_MAX_TX_RINGS=16
> > > # Compile software PMD backed by PCAP files
> > > CONFIG_RTE_LIBRTE_PMD_PCAP=n # Compile link bonding PMD library
> > > CONFIG_RTE_LIBRTE_PMD_BOND=y
> > CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB=n
> > > CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n
> > > # QLogic 10G/25G/40G/50G/100G PMD
> > > CONFIG_RTE_LIBRTE_QEDE_PMD=y
> > > CONFIG_RTE_LIBRTE_QEDE_DEBUG_INIT=n
> > > CONFIG_RTE_LIBRTE_QEDE_DEBUG_INFO=n
> > > CONFIG_RTE_LIBRTE_QEDE_DEBUG_DRIVER=n
> > > CONFIG_RTE_LIBRTE_QEDE_DEBUG_TX=n
> > > CONFIG_RTE_LIBRTE_QEDE_DEBUG_RX=n
> > > #Provides abs path/name of architecture we compile for. firmware file.
> > > #Empty string denotes driver will use default firmware
> > > CONFIG_RTE_LIBRTE_QEDE_FW=""
> > > # Compile software PMD backed by AF_PACKET sockets (Linux only)
> > > CONFIG_RTE_LIBRTE_PMD_AF_PACKET=y # Compile ARK PMD
> > > CONFIG_RTE_LIBRTE_ARK_PMD=y CONFIG_RTE_LIBRTE_ARK_PAD_TX=y
> > > CONFIG_RTE_LIBRTE_ARK_DEBUG_RX=n
> > CONFIG_RTE_LIBRTE_ARK_DEBUG_TX=n
> > > CONFIG_RTE_LIBRTE_ARK_DEBUG_STATS=n
> > > CONFIG_RTE_LIBRTE_ARK_DEBUG_TRACE=n
> > > # Compile WRS accelerated virtual port (AVP) guest PMD driver
> > > CONFIG_RTE_LIBRTE_AVP_PMD=n
> CONFIG_RTE_LIBRTE_AVP_DEBUG_RX=n
> > > CONFIG_RTE_LIBRTE_AVP_DEBUG_TX=n
> > CONFIG_RTE_LIBRTE_AVP_DEBUG_DRIVER=y
> > > CONFIG_RTE_LIBRTE_AVP_DEBUG_BUFFERS=n
> > > # Compile architecture we compile for. TAP PMD # It is enabled by
> > > default
> > for
> > > Linux only.
> > > CONFIG_RTE_LIBRTE_PMD_TAP=y
> > > # Compile Xen PMD
> > > CONFIG_RTE_LIBRTE_PMD_XENVIRT=n
> > > # Compile null PMD
> > > CONFIG_RTE_LIBRTE_PMD_NULL=y
> > > # Compile fail-safe PMD
> > > CONFIG_RTE_LIBRTE_PMD_FAILSAFE=y
> > > # Do prefetch of packet data within PMD driver receive function
> > > CONFIG_RTE_PMD_PACKET_PREFETCH=y # Compile generic crypto device
> > > library CONFIG_RTE_LIBRTE_CRYPTODEV=y
> > > CONFIG_RTE_LIBRTE_CRYPTODEV_DEBUG=n
> > > CONFIG_RTE_CRYPTO_MAX_DEVS=64
> > > CONFIG_RTE_CRYPTODEV_NAME_LEN=64
> > > # Compile PMD for ARMv8 Crypto device
> > > CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO=n
> > > CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO_DEBUG=n
> > > # Compile NXP DPAA2 crypto sec driver for CAAM HW
> > > CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC=n
> > > CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_INIT=n
> > > CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_DRIVER=n
> > > CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_RX=n
> > > # Compile PMD for QuickAssist based devices
> > > CONFIG_RTE_LIBRTE_PMD_QAT=n
> > CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_INIT=n
> > > CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_TX=n
> > > CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_RX=n
> > > CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_DRIVER=n
> > > # Number of sessions to create in architecture we compile for.
> > > session
> > memory
> > > pool # on a single QuickAssist device.
> > > CONFIG_RTE_QAT_PMD_MAX_NB_SESSIONS=2048
> > > # Compile PMD for AESNI backed device
> > > CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n
> > > CONFIG_RTE_LIBRTE_PMD_AESNI_MB_DEBUG=n
> > > # Compile PMD for Software backed device
> > > CONFIG_RTE_LIBRTE_PMD_OPENSSL=n
> > CONFIG_RTE_LIBRTE_PMD_OPENSSL_DEBUG=n
> > > # Compile PMD for AESNI GCM device
> > > CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=n
> > > CONFIG_RTE_LIBRTE_PMD_AESNI_GCM_DEBUG=n
> > > # Compile PMD for SNOW 3G device
> > > CONFIG_RTE_LIBRTE_PMD_SNOW3G=n
> > > CONFIG_RTE_LIBRTE_PMD_SNOW3G_DEBUG=n
> > > # Compile PMD for KASUMI device
> > > CONFIG_RTE_LIBRTE_PMD_KASUMI=n
> > > CONFIG_RTE_LIBRTE_PMD_KASUMI_DEBUG=n
> > > # Compile PMD for ZUC device
> > > CONFIG_RTE_LIBRTE_PMD_ZUC=n
> > > CONFIG_RTE_LIBRTE_PMD_ZUC_DEBUG=n
> > > # Compile PMD for Crypto Scheduler device
> > > CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER=y
> > > CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER_DEBUG=n
> > > # Compile PMD for NULL Crypto device
> > > CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO=y
> > > # Compile generic event device library CONFIG_RTE_LIBRTE_EVENTDEV=y
> > > CONFIG_RTE_LIBRTE_EVENTDEV_DEBUG=n
> > > CONFIG_RTE_EVENT_MAX_DEVS=16
> > > CONFIG_RTE_EVENT_MAX_QUEUES_PER_DEV=64
> > > # Compile PMD for skeleton event device
> > > CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV=y
> > > CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV_DEBUG=n
> > > # Compile PMD for software event device
> > > CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV=y
> > > CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV_DEBUG=n
> > > # Compile PMD for octeontx sso event device
> > > CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF=y
> > > CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF_DEBUG=n
> > > # Compile librte_ring
> > > CONFIG_RTE_LIBRTE_RING=y
> > > # Compile librte_mempool
> > > CONFIG_RTE_LIBRTE_MEMPOOL=y
> > > CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512
> > > CONFIG_RTE_LIBRTE_MEMPOOL_DEBUG=n
> > > # Compile Mempool drivers
> > > CONFIG_RTE_DRIVER_MEMPOOL_RING=y
> > > CONFIG_RTE_DRIVER_MEMPOOL_STACK=y
> > > # Compile librte_mbuf
> > > CONFIG_RTE_LIBRTE_MBUF=y
> > > CONFIG_RTE_LIBRTE_MBUF_DEBUG=n
> > > CONFIG_RTE_MBUF_DEFAULT_MEMPOOL_OPS="ring_mp_mc"
> > > CONFIG_RTE_MBUF_REFCNT_ATOMIC=y
> > > CONFIG_RTE_PKTMBUF_HEADROOM=128
> > > # Compile librte_timer
> > > CONFIG_RTE_LIBRTE_TIMER=y
> > > CONFIG_RTE_LIBRTE_TIMER_DEBUG=n
> > > # Compile librte_cfgfile
> > > CONFIG_RTE_LIBRTE_CFGFILE=y
> > > # Compile librte_cmdline
> > > CONFIG_RTE_LIBRTE_CMDLINE=y
> > > CONFIG_RTE_LIBRTE_CMDLINE_DEBUG=n
> > > # Compile librte_hash
> > > CONFIG_RTE_LIBRTE_HASH=y
> > > CONFIG_RTE_LIBRTE_HASH_DEBUG=n
> > > # Compile librte_efd
> > > CONFIG_RTE_LIBRTE_EFD=y
> > > # Compile librte_jobstats
> > > CONFIG_RTE_LIBRTE_JOBSTATS=y
> > > # Compile architecture we compile for. device metrics library
> > > CONFIG_RTE_LIBRTE_METRICS=y # Compile architecture we compile for.
> > > bitrate statistics library CONFIG_RTE_LIBRTE_BITRATE=y # Compile
> > > architecture we compile for. latency statistics library
> > > CONFIG_RTE_LIBRTE_LATENCY_STATS=y # Compile librte_lpm
> > > CONFIG_RTE_LIBRTE_LPM=y CONFIG_RTE_LIBRTE_LPM_DEBUG=n #
> > Compile
> > > librte_acl CONFIG_RTE_LIBRTE_ACL=y
> CONFIG_RTE_LIBRTE_ACL_DEBUG=n
> > #
> > > Compile librte_power CONFIG_RTE_LIBRTE_POWER=y
> > > CONFIG_RTE_LIBRTE_POWER_DEBUG=n
> > > CONFIG_RTE_MAX_LCORE_FREQS=64
> > > # Compile librte_net
> > > CONFIG_RTE_LIBRTE_NET=y
> > > # Compile librte_ip_frag
> > > CONFIG_RTE_LIBRTE_IP_FRAG=y
> > > CONFIG_RTE_LIBRTE_IP_FRAG_DEBUG=n
> > > CONFIG_RTE_LIBRTE_IP_FRAG_MAX_FRAG=4
> > > CONFIG_RTE_LIBRTE_IP_FRAG_TBL_STAT=n
> > > # Compile GRO library
> > > CONFIG_RTE_LIBRTE_GRO=y
> > > # Compile librte_meter
> > > CONFIG_RTE_LIBRTE_METER=y
> > > # Compile librte_sched
> > > CONFIG_RTE_LIBRTE_SCHED=y
> > > CONFIG_RTE_SCHED_DEBUG=n
> > > CONFIG_RTE_SCHED_RED=n
> > > CONFIG_RTE_SCHED_COLLECT_STATS=n
> > > CONFIG_RTE_SCHED_SUBPORT_TC_OV=n
> > > CONFIG_RTE_SCHED_PORT_N_GRINDERS=8
> > > CONFIG_RTE_SCHED_VECTOR=n
> > > # Compile architecture we compile for. distributor library
> > > CONFIG_RTE_LIBRTE_DISTRIBUTOR=y # Compile architecture we compile
> for.
> > > reorder library CONFIG_RTE_LIBRTE_REORDER=y # Compile librte_port
> > > CONFIG_RTE_LIBRTE_PORT=y CONFIG_RTE_PORT_STATS_COLLECT=n
> > > CONFIG_RTE_PORT_PCAP=n # Compile librte_table
> > > CONFIG_RTE_LIBRTE_TABLE=y CONFIG_RTE_TABLE_STATS_COLLECT=n #
> > Compile
> > > librte_pipeline CONFIG_RTE_LIBRTE_PIPELINE=y
> > > CONFIG_RTE_PIPELINE_STATS_COLLECT=n
> > > # Compile librte_kni
> > > CONFIG_RTE_LIBRTE_KNI=y
> > > CONFIG_RTE_LIBRTE_PMD_KNI=y
> > > CONFIG_RTE_KNI_KMOD=y
> > > CONFIG_RTE_KNI_KMOD_ETHTOOL=n
> > > CONFIG_RTE_KNI_PREEMPT_DEFAULT=y
> > > # Compile architecture we compile for. pdump library
> > > CONFIG_RTE_LIBRTE_PDUMP=y # Compile vhost user library
> > > CONFIG_RTE_LIBRTE_VHOST=y CONFIG_RTE_LIBRTE_VHOST_NUMA=y
> > > CONFIG_RTE_LIBRTE_VHOST_DEBUG=n # Compile vhost PMD # To compile,
> > > CONFIG_RTE_LIBRTE_VHOST should be enabled.
> > > CONFIG_RTE_LIBRTE_PMD_VHOST=y
> > > #Compile Xen domain0 support
> > > CONFIG_RTE_LIBRTE_XEN_DOM0=n
> > > # Compile architecture we compile for. test application
> > > CONFIG_RTE_APP_TEST=y CONFIG_RTE_APP_TEST_RESOURCE_TAR=n
> > > # Compile architecture we compile for. PMD test application
> > > CONFIG_RTE_TEST_PMD=y
> > CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES=n
> > > CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS=n
> > > # Compile architecture we compile for. crypto performance
> > > application CONFIG_RTE_APP_CRYPTO_PERF=y # Compile architecture we
> compile for.
> > > eventdev application CONFIG_RTE_APP_EVENTDEV=y
> > > CONFIG_RTE_EXEC_ENV_LINUXAPP=y CONFIG_RTE_ARCH_PPC_64=y
> > > CONFIG_RTE_ARCH_64=y CONFIG_RTE_TOOLCHAIN_GCC=y # Note: Power
> > doesn't
> > > have this support # Note: Initially, all of architecture we
> > compile for.
> > > PMD drivers compilation are turned off on Power # Will turn on them
> > > only
> > after
> > > architecture we compile for. successful testing on Power
> > >
> > > Please refer here for more information on running DPDK multi-process
> > > examples:
> > >
> > > https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fu
> > > rl
> > > defense.proofpoint.com%2Fv2%2Furl%3Fu%3Dhttp-
> > 3A__dpdk.org_doc_guides_s
> > >
> >
> &data=02%7C01%7Cxuemingl%40mellanox.com%7C9cd11fda7a7f48df7cbd08d
> > 4f9b4
> > >
> >
> 86d8%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C6364080011387
> > 51301&s
> > >
> data=4n76ha0PmSr3wP2c0MAo3PEVYRMKjJVcU9o5xETqhBc%3D&reserved=0
> > > ample-5Fapp-5Fug_multi-5Fprocess.html&d=DwIFAg&c=jf_iaSHvJObTbx-
> > siA1Z
> > >
> >
> Og&r=4TYe4NpqlgVi0ArYpZ76FrWp7IEw8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwu
> > > uryoN7QPg9N-6aTY_jEvDZtMZR0o&s=gupwe5WWQ-
> > ap2jObFko6UJymrcy4jTmF
> > > 2r1dZ2fQN9E&e=
> > >
> > > Best Regards,
> > > Xueming
> >


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [dpdk-dev] multi-process shared memory on PPC
  2017-09-12 18:11     ` Xueming(Steven) Li
@ 2017-09-13  8:56       ` Xueming(Steven) Li
  0 siblings, 0 replies; 7+ messages in thread
From: Xueming(Steven) Li @ 2017-09-13  8:56 UTC (permalink / raw)
  To: Chao Zhu; +Cc: dev

HI Chao,

Found a mmap MAP_SHARED issue in multi-process, the address returned seems to be a local malloc address, conflicts with other variable in secondary process, code:

Mmap in primary process initiates a shared address:
	addr = mmap(NULL, page_size, PROT_WRITE, MAP_SHARED, cmd_fd, offset);
At secondary process, the remapping of primary address with same offset and length succeed, but it corrupted a local variable allocated by calloc():
	addr = mmap((void *)pri_addr, page_size, PROT_WRITE, MAP_FIXED | MAP_SHARED, fd, offset);

Gdb log of secondary process, comments inside. Hope I'm wrong somewhere:

Thread 1 "symmetric_mp" hit Breakpoint 1, mlx5_init_context (vdev=0x10430c00, ctx=0x7ffff72200b8, cmd_fd=7)
    at /home/xueming/rdma-core/providers/mlx5/mlx5.c:888
888             gross_uuars = context->tot_uuars / MLX5_NUM_NON_FP_BFREGS_PER_UAR * NUM_BFREGS_PER_UAR;
(gdb) p context
$1 = (struct mlx5_context *) 0x7ffff72200b8
(gdb) p *context
$2 = {ibv_ctx = {device = 0x0, ops = {query_device = 0x0, query_port = 0x0, alloc_pd = 0x0, dealloc_pd = 0x0, reg_mr = 0x0, rereg_mr = 0x0, dereg_mr = 0x0,
...
/////////// the local variable "context" allocated by calloc() works well before mmap ///////////
 (gdb) c
Continuing.
Thread 1 "symmetric_mp" received signal SIGSEGV, Segmentation fault.
0x00007ffff7d06340 in free () from /lib/powerpc64le-linux-gnu/libc.so.6
(gdb) bt
#0  0x00007ffff7d06340 in free () from /lib/powerpc64le-linux-gnu/libc.so.6
#1  0x00007ffff7efd92c in mlx5_cleanup_context (device=0x10430c00, ibctx=0x7ffff72200b8) at /home/xueming/rdma-core/providers/mlx5/mlx5.c:1008
#2  0x00007ffff7f3cc74 in __ibv_close_device_1_1 (context=0x7ffff72200b8) at /home/xueming/rdma-core/libibverbs/device.c:285
#3  0x00000000101d8118 in mlx5_pci_probe (pci_drv=0x103345a8 <mlx5_driver>, pci_dev=0x10440510) at /home/xueming/mlnx-dpdk.org/drivers/net/mlx5/mlx5.c:925
...
(gdb) f 1
#1  0x00007ffff7efd92c in mlx5_cleanup_context (device=0x10430c00, ibctx=0x7ffff72200b8) at /home/xueming/rdma-core/providers/mlx5/mlx5.c:1008
1008            free(context->bfs);
(gdb) p context
$3 = (struct mlx5_context *) 0x7ffff72200b8
////////////same address///////////////
 (gdb) p *context
Cannot access memory at address 0x7ffff7250000
////////// This is the address returned by mmap() of primary address, conflicted here. /////////////////
(gdb) p sizeof(struct mlx5_context)
$5 = 199408
 (gdb) p/x  0x7ffff72200b8 + 199408
$7 = 0x7ffff7250ba8

Best Regards,
Xueming


> -----Original Message-----
> From: Xueming(Steven) Li
> Sent: Wednesday, September 13, 2017 2:11 AM
> To: Xueming(Steven) Li <xuemingl@mellanox.com>; Chao Zhu
> <chaozhu@linux.vnet.ibm.com>
> Cc: dev@dpdk.org
> Subject: RE: multi-process shared memory on PPC
> 
> It works for me after setting nr_overcommit_hugepages correctly, thanks again.
> 
> > -----Original Message-----
> > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Xueming(Steven)
> > Li
> > Sent: Tuesday, September 12, 2017 4:13 PM
> > To: Chao Zhu <chaozhu@linux.vnet.ibm.com>
> > Cc: dev@dpdk.org
> > Subject: Re: [dpdk-dev] multi-process shared memory on PPC
> >
> > Great, that might be something missing, will update later. Thanks!
> >
> > > -----Original Message-----
> > > From: Chao Zhu [mailto:chaozhu@linux.vnet.ibm.com]
> > > Sent: Tuesday, September 12, 2017 4:02 PM
> > > To: Xueming(Steven) Li <xuemingl@mellanox.com>
> > > Cc: dev@dpdk.org
> > > Subject: RE: multi-process shared memory on PPC
> > >
> > > Xueming,
> > >
> > > I tried it on my local server, it works fine.
> > > Did you set this value
> > > "/sys/kernel/mm/hugepages/hugepages-
> > 16384kB/nr_overcommit_hugepages" ?
> > > It should be the same value as "
> > > /sys/kernel/mm/hugepages/hugepages-16384kB/nr_hugepages" on
> ppc64le.
> > >
> > > > -----Original Message-----
> > > > From: Xueming(Steven) Li [mailto:xuemingl@mellanox.com]
> > > > Sent: 2017年8月31日 22:40
> > > > To: Chao Zhu <chaozhu@linux.vnet.ibm.com>
> > > > Cc: dev@dpdk.org
> > > > Subject: multi-process shared memory on PPC
> > > >
> > > > Hi all,
> > > >
> > > > I'm testing multi-process example on PowerPC system, looks like
> > > > shared memory not working properly.
> > > > Below are the error and debug info of the first multi-process
> > > > example 'simple_mp' (works as expected on X86):
> > > >
> > > > // Build DPDK, master branch
> > > > # make T=ppc_64-power8-linuxapp-gcc -j160 -C
> > > > examples/multi_process/simple_mp/ #
> > > > examples/multi_process/simple_mp/build/simple_mp  -w 0:0.0
> > > > --proc-type=primary -l 1-2 --socket-mem
> > > > 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
> > > > APP: Finished Process Init.
> > > > Starting core 2
> > > > simple_mp >
> > > >
> > > > // Open another terminal and run secondary process # gdb --args
> > > > examples/multi_process/simple_mp/build/simple_mp -n 4 -w 0:0.0
> > > > --proc-type=secondary -l 3-4 --socket-mem
> > > > 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
> > > > GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1 Copyright (C) 2016
> > > > Free Software Foundation, Inc.
> > > > License GPLv3+: GNU GPL version 3 or later
> > > >
> > > <https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2F
> > > ur
> > > ldef
> > > ense.proofpoint.com%2Fv2%2Furl%3Fu%3Dhttp-
> > >
> >
> 3A__gnu.org_licenses_gpl&data=02%7C01%7Cxuemingl%40mellanox.com%7C
> > >
> >
> 9cd11fda7a7f48df7cbd08d4f9b486d8%7Ca652971c7d2e4d9ba6a4d149256f461
> > >
> >
> b%7C0%7C0%7C636408001138751301&sdata=bb3hwYz7ehCqt4QA6GGqTDMY
> > > kY1qAJV%2BCMDBVbXmWzE%3D&reserved=0.
> > > h
> > > > tml&d=DwIFAg&c=jf_iaSHvJObTbx-
> > > siA1ZOg&r=4TYe4NpqlgVi0ArYpZ76FrWp7IE
> > > > w8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwuuryoN7QPg9N-
> > 6aTY_jEvDZtMZR0o&s
> > > > =SbDQBN7qJ9z8fWCSePyvm5FFncp2P_9XZm-qs1lH5PE&e= > This is free
> > > > software: you are free to change and redistribute it.
> > > > There is NO WARRANTY, to the extent permitted by law.  Type "show
> > > copying"
> > > > and "show warranty" for details.
> > > > This GDB was configured as "powerpc64le-linux-gnu".
> > > > Type "show configuration" for configuration details.
> > > > For bug reporting instructions, please see:
> > > > <https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%
> > > > 2F
> > > > ur
> > > > ldefense.proofpoint.com%2Fv2%2Furl%3Fu%3Dhttp-
> > > 3A__www.gnu.org_softwar&
> > > >
> > >
> >
> data=02%7C01%7Cxuemingl%40mellanox.com%7C9cd11fda7a7f48df7cbd08d4f
> > > 9b48
> > > >
> > >
> >
> 6d8%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C63640800113875
> > > 1301&sd
> > > >
> > >
> >
> ata=4DNDTyIcHpTIU60K7FM%2F1zuASSB1IdZDRyOaiVp1Y%2BY%3D&reserved=
> > > 0
> > > > e_gdb_bugs_&d=DwIFAg&c=jf_iaSHvJObTbx-
> > > siA1ZOg&r=4TYe4NpqlgVi0ArYpZ
> > > > 76FrWp7IEw8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwuuryoN7QPg9N-
> > > 6aTY_jEvDZt
> > > > MZR0o&s=GAFKK3jSahAPFXMGcPGbVNTl0CesJy_qfs5TxXfGOX0&e= >.
> > > > Find the GDB manual and other documentation resources online at:
> > > > <https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%
> > > > 2F
> > > > ur
> > > > ldefense.proofpoint.com%2Fv2%2Furl%3Fu%3Dhttp-
> > > 3A__www.gnu.org_softwar&
> > > >
> > >
> >
> data=02%7C01%7Cxuemingl%40mellanox.com%7C9cd11fda7a7f48df7cbd08d4f
> > > 9b48
> > > >
> > >
> >
> 6d8%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C63640800113875
> > > 1301&sd
> > > >
> > >
> >
> ata=4DNDTyIcHpTIU60K7FM%2F1zuASSB1IdZDRyOaiVp1Y%2BY%3D&reserved=
> > > 0
> > > > e_gdb_documentation_&d=DwIFAg&c=jf_iaSHvJObTbx-
> > > siA1ZOg&r=4TYe4Npql
> > > >
> > gVi0ArYpZ76FrWp7IEw8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwuuryoN7QPg9N-
> > > 6a
> > > > TY_jEvDZtMZR0o&s=JdkMMjGGl-
> > > 3Z3BGnjCkOFP5lI5BIbRNBxH4EVI70YFc&e= > .
> > > > For help, type "help".
> > > > Type "apropos word" to search for commands related to "word"...
> > > > Reading symbols from
> > > > examples/multi_process/simple_mp/build/simple_mp...done.
> > > > (gdb) r
> > > > Starting program:
> > > > /home/xueming/mlnx-
> > > dpdk.org/examples/multi_process/simple_mp/build/sim
> > > > ple_mp -n 4 -w 0:0.0 --proc-type=secondary -l 3-4 --socket-mem
> > > > 256,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256
> > > > [Thread debugging using libthread_db enabled] Using host
> > > > libthread_db
> > > library
> > > > "/lib/powerpc64le-linux-gnu/libthread_db.so.1".
> > > > EAL: Detected 144 lcore(s)
> > > > EAL: Probing VFIO support...
> > > > [New Thread 0x7ffff7a6eff0 (LWP 58811)] [New Thread 0x7ffff726eff0
> > > > (LWP 58812)]
> > > >
> > > > Thread 1 "simple_mp" received signal SIGSEGV, Segmentation fault.
> > > > 0x00007ffff7d2f3ec in ?? () from
> > > > /lib/powerpc64le-linux-gnu/libc.so.6
> > > >  (gdb) bt full
> > > > #0  0x00007ffff7d2f3ec in ?? () from
> > > > /lib/powerpc64le-linux-gnu/libc.so.6
> > > > No symbol table info available.
> > > > #1  0x0000000010077d54 in rte_ring_lookup (name=0x102a4e28
> > > > "PRI_2_SEC")
> > > >     at /home/xueming/mlnx-dpdk.org/lib/librte_ring/rte_ring.c:326
> > > >         te = 0x7ef3eefd5e00
> > > >         r = 0x0
> > > >         ring_list = 0x7ffff7aa250c
> > > > #2  0x0000000010032640 in main (argc=10, argv=0x7ffffffff3e8)
> > > >     at
> > > > /home/xueming/mlnx-
> > > dpdk.org/examples/multi_process/simple_mp/main.c:12
> > > > 8
> > > >         flags = 0
> > > >         ring_size = 64
> > > >         pool_size = 1024
> > > >         pool_cache = 32
> > > >         priv_data_sz = 0
> > > >         ret = 9
> > > >         lcore_id = 32767
> > > >         cl = 0x7ffff7fef718 <_dl_argv>
> > > > (gdb) f 1
> > > > #1  0x0000000010077d54 in rte_ring_lookup (name=0x102a4e28
> > > > "PRI_2_SEC")
> > > >     at /home/xueming/mlnx-dpdk.org/lib/librte_ring/rte_ring.c:326
> > > > 326                     if (strncmp(name, r->name,
> > > > RTE_RING_NAMESIZE) == 0)
> > > > (gdb) l
> > > > 321
> > > > 322             rte_rwlock_read_lock(RTE_EAL_TAILQ_RWLOCK);
> > > > 323
> > > > 324             TAILQ_FOREACH(te, ring_list, next) {
> > > > 325                     r = (struct rte_ring *) te->data;
> > > > 326                     if (strncmp(name, r->name,
> > > > RTE_RING_NAMESIZE) == 0)
> > > > 327                             break;
> > > > 328             }
> > > > 329
> > > > 330             rte_rwlock_read_unlock(RTE_EAL_TAILQ_RWLOCK);
> > > > (gdb) p *te
> > > > $1 = {next = {tqe_next = 0x0, tqe_prev = 0x0}, data = 0x0}
> > > > (gdb) p *ring_list
> > > > $2 = {tqh_first = 0x7ef3eefd5e00, tqh_last = 0x7ef3eec6d100}
> > > >
> > > > # uname -a
> > > > Linux dragon-power-01 4.13.0-rc2 #1 SMP Tue Aug 29 17:27:05 IDT
> > > > 2017 ppc64le ppc64le ppc64le GNU/Linux
> > > >
> > > > # cat /etc/issue
> > > > Ubuntu 16.04.2 LTS \n \l
> > > >
> > > > # gcc --version
> > > > gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 Copyright
> > > > (C)
> > > > 2015 Free Software Foundation, Inc.
> > > > This is free software; see the source for copying conditions.
> > > > There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR
> > > > A PARTICULAR PURPOSE.
> > > >
> > > > # lscpu
> > > > Architecture:          ppc64le
> > > > Byte Order:            Little Endian
> > > > CPU(s):                144
> > > > On-line CPU(s) list:   0-87,96-103,112-159
> > > > Thread(s) per core:    8
> > > > Core(s) per socket:    4
> > > > Socket(s):             4
> > > > NUMA node(s):          4
> > > > Model:                 2.1 (pvr 004b 0201)
> > > > Model name:            POWER8E (raw), altivec supported
> > > > CPU max MHz:           3690.0000
> > > > CPU min MHz:           2061.0000
> > > > L1d cache:             64K
> > > > L1i cache:             32K
> > > > L2 cache:              512K
> > > > L3 cache:              8192K
> > > > NUMA node0 CPU(s):     0-39
> > > > NUMA node1 CPU(s):     40-79
> > > > NUMA node16 CPU(s):    80-87,96-103,112-119
> > > > NUMA node17 CPU(s):    120-159
> > > >
> > > > # cat build/.config
> > > > # RTE_EXEC_ENV values are the directories in mk/exec-env/
> > > > CONFIG_RTE_EXEC_ENV="linuxapp"
> > > > # RTE_ARCH values are architecture we compile for. directories in
> > > > mk/arch/ CONFIG_RTE_ARCH="ppc_64"
> > > > # machine can define specific variables or action for a specific
> > > > board # RTE_MACHINE values are architecture we compile for.
> > > > directories in mk/machine/ CONFIG_RTE_MACHINE="power8"
> > > > # The compiler we use.
> > > > # RTE_TOOLCHAIN values are architecture we compile for.
> > > > directories in mk/toolchain/ CONFIG_RTE_TOOLCHAIN="gcc"
> > > > # Use intrinsics or assembly code for key routines
> > > > CONFIG_RTE_FORCE_INTRINSICS=n # Machine forces strict alignment
> > > > constraints.
> > > > CONFIG_RTE_ARCH_STRICT_ALIGN=n
> > > > # Compile to share library
> > > > CONFIG_RTE_BUILD_SHARED_LIB=n
> > > > # Use newest code breaking previous ABI CONFIG_RTE_NEXT_ABI=y #
> > > > Major ABI to overwrite library specific LIBABIVER
> > > > CONFIG_RTE_MAJOR_ABI= # Machine's cache line size
> > > > CONFIG_RTE_CACHE_LINE_SIZE=128
> > > > # Compile Environment Abstraction Layer CONFIG_RTE_LIBRTE_EAL=y
> > > > CONFIG_RTE_MAX_LCORE=256
> > > > CONFIG_RTE_MAX_NUMA_NODES=32
> > > > CONFIG_RTE_MAX_MEMSEG=256
> > > > CONFIG_RTE_MAX_MEMZONE=2560
> > > > CONFIG_RTE_MAX_TAILQ=32
> > > > CONFIG_RTE_LOG_LEVEL=RTE_LOG_INFO
> > > > CONFIG_RTE_LOG_DP_LEVEL=RTE_LOG_INFO
> > > > CONFIG_RTE_LOG_HISTORY=256
> > > > CONFIG_RTE_BACKTRACE=y
> > > > CONFIG_RTE_LIBEAL_USE_HPET=n
> > > > CONFIG_RTE_EAL_ALLOW_INV_SOCKET_ID=n
> > > > CONFIG_RTE_EAL_ALWAYS_PANIC_ON_ERROR=n
> > > > CONFIG_RTE_EAL_IGB_UIO=y
> > > > CONFIG_RTE_EAL_VFIO=y
> > > > CONFIG_RTE_MALLOC_DEBUG=n
> > > > CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=y
> > > > # Recognize/ignore architecture we compile for. AVX/AVX512 CPU
> > > > flags for performance/power testing.
> > > > # AVX512 is marked as experimental for now, will enable it after
> > > > enough #
> > > field
> > > > test and possible optimization.
> > > > CONFIG_RTE_ENABLE_AVX=y
> > > > CONFIG_RTE_ENABLE_AVX512=n
> > > > # Default driver path (or "" to disable) CONFIG_RTE_EAL_PMD_PATH=""
> > > > # Compile Environment Abstraction Layer to support Vmware TSC map
> > > > CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=n
> > > > # Compile architecture we compile for. argument parser library
> > > > CONFIG_RTE_LIBRTE_KVARGS=y # Compile generic ethernet library
> > > > CONFIG_RTE_LIBRTE_ETHER=y CONFIG_RTE_LIBRTE_ETHDEV_DEBUG=n
> > > > CONFIG_RTE_MAX_ETHPORTS=32
> > > > CONFIG_RTE_MAX_QUEUES_PER_PORT=1024
> > > > CONFIG_RTE_LIBRTE_IEEE1588=n
> > > > CONFIG_RTE_ETHDEV_QUEUE_STAT_CNTRS=16
> > > > CONFIG_RTE_ETHDEV_RXTX_CALLBACKS=y
> > > > # Turn off Tx preparation stage
> > > > # Warning: rte_eth_tx_prepare() can be safely disabled only if
> > > > using a #
> > > driver
> > > > which do not implement any Tx preparation.
> > > > CONFIG_RTE_ETHDEV_TX_PREPARE_NOOP=n
> > > > # Compile burst-oriented Amazon ENA PMD driver
> > > > CONFIG_RTE_LIBRTE_ENA_PMD=y
> > CONFIG_RTE_LIBRTE_ENA_DEBUG_RX=n
> > > > CONFIG_RTE_LIBRTE_ENA_DEBUG_TX=n
> > > CONFIG_RTE_LIBRTE_ENA_DEBUG_TX_FREE=n
> > > > CONFIG_RTE_LIBRTE_ENA_DEBUG_DRIVER=n
> > > > CONFIG_RTE_LIBRTE_ENA_COM_DEBUG=n
> > > > # Compile burst-oriented IGB & EM PMD drivers
> > > > CONFIG_RTE_LIBRTE_EM_PMD=y CONFIG_RTE_LIBRTE_IGB_PMD=y
> > > > CONFIG_RTE_LIBRTE_E1000_DEBUG_INIT=n
> > > > CONFIG_RTE_LIBRTE_E1000_DEBUG_RX=n
> > > > CONFIG_RTE_LIBRTE_E1000_DEBUG_TX=n
> > > > CONFIG_RTE_LIBRTE_E1000_DEBUG_TX_FREE=n
> > > > CONFIG_RTE_LIBRTE_E1000_DEBUG_DRIVER=n
> > > > CONFIG_RTE_LIBRTE_E1000_PF_DISABLE_STRIP_CRC=n
> > > > # Compile burst-oriented IXGBE PMD driver
> > > > CONFIG_RTE_LIBRTE_IXGBE_PMD=n
> > > CONFIG_RTE_LIBRTE_IXGBE_DEBUG_INIT=n
> > > > CONFIG_RTE_LIBRTE_IXGBE_DEBUG_RX=n
> > > > CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX=n
> > > > CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX_FREE=n
> > > > CONFIG_RTE_LIBRTE_IXGBE_DEBUG_DRIVER=n
> > > > CONFIG_RTE_LIBRTE_IXGBE_PF_DISABLE_STRIP_CRC=n
> > > > CONFIG_RTE_IXGBE_INC_VECTOR=y
> > > > CONFIG_RTE_LIBRTE_IXGBE_BYPASS=n
> > > > # Compile burst-oriented I40E PMD driver
> > > > CONFIG_RTE_LIBRTE_I40E_PMD=y
> > CONFIG_RTE_LIBRTE_I40E_DEBUG_RX=n
> > > CONFIG_RTE_LIBRTE_I40E_DEBUG_TX=n
> > > > CONFIG_RTE_LIBRTE_I40E_DEBUG_TX_FREE=n
> > > > CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC=y
> > > > CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=y
> > > > CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n
> > > > CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF=64
> > > > CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VF=4
> > > > CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM=4
> > > > # interval up to 8160 us, aligned to 2 (or default value)
> > > > CONFIG_RTE_LIBRTE_I40E_ITR_INTERVAL=-1
> > > > # Compile burst-oriented FM10K PMD
> CONFIG_RTE_LIBRTE_FM10K_PMD=n
> > > > CONFIG_RTE_LIBRTE_FM10K_DEBUG_INIT=n
> > > > CONFIG_RTE_LIBRTE_FM10K_DEBUG_RX=n
> > > > CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX=n
> > > > CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX_FREE=n
> > > > CONFIG_RTE_LIBRTE_FM10K_DEBUG_DRIVER=n
> > > > CONFIG_RTE_LIBRTE_FM10K_RX_OLFLAGS_ENABLE=y
> > > > CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=y
> > > > # Compile burst-oriented Mellanox ConnectX-3 (MLX4) PMD
> > > > CONFIG_RTE_LIBRTE_MLX4_PMD=n
> CONFIG_RTE_LIBRTE_MLX4_DEBUG=n
> > > > CONFIG_RTE_LIBRTE_MLX4_DEBUG_BROKEN_VERBS=n
> > > > CONFIG_RTE_LIBRTE_MLX4_SGE_WR_N=4
> > > > CONFIG_RTE_LIBRTE_MLX4_MAX_INLINE=0
> > > > CONFIG_RTE_LIBRTE_MLX4_TX_MP_CACHE=8
> > > > CONFIG_RTE_LIBRTE_MLX4_SOFT_COUNTERS=1
> > > > # Compile burst-oriented Mellanox ConnectX-4 & ConnectX-5 (MLX5)
> > > > PMD CONFIG_RTE_LIBRTE_MLX5_PMD=y
> CONFIG_RTE_LIBRTE_MLX5_DEBUG=n
> > > > CONFIG_RTE_LIBRTE_MLX5_TX_MP_CACHE=8
> > > > # Compile burst-oriented Broadcom PMD driver
> > > > CONFIG_RTE_LIBRTE_BNX2X_PMD=n
> > CONFIG_RTE_LIBRTE_BNX2X_DEBUG=n
> > > > CONFIG_RTE_LIBRTE_BNX2X_DEBUG_INIT=n
> > > > CONFIG_RTE_LIBRTE_BNX2X_DEBUG_RX=n
> > > > CONFIG_RTE_LIBRTE_BNX2X_DEBUG_TX=n
> > > > CONFIG_RTE_LIBRTE_BNX2X_MF_SUPPORT=n
> > > > CONFIG_RTE_LIBRTE_BNX2X_DEBUG_PERIODIC=n
> > > > # Compile burst-oriented Chelsio Terminator (CXGBE) PMD
> > > > CONFIG_RTE_LIBRTE_CXGBE_PMD=y
> > > CONFIG_RTE_LIBRTE_CXGBE_DEBUG=n
> > > > CONFIG_RTE_LIBRTE_CXGBE_DEBUG_REG=n
> > > > CONFIG_RTE_LIBRTE_CXGBE_DEBUG_MBOX=n
> > > > CONFIG_RTE_LIBRTE_CXGBE_DEBUG_TX=n
> > > > CONFIG_RTE_LIBRTE_CXGBE_DEBUG_RX=n
> > > > CONFIG_RTE_LIBRTE_CXGBE_TPUT=y
> > > > # Compile burst-oriented Cisco ENIC PMD driver
> > > > CONFIG_RTE_LIBRTE_ENIC_PMD=n CONFIG_RTE_LIBRTE_ENIC_DEBUG=n
> > > > CONFIG_RTE_LIBRTE_ENIC_DEBUG_FLOW=n
> > > > # Compile burst-oriented Netronome NFP PMD driver
> > > > CONFIG_RTE_LIBRTE_NFP_PMD=y CONFIG_RTE_LIBRTE_NFP_DEBUG=n #
> > > Compile
> > > > burst-oriented Broadcom BNXT PMD driver
> > > CONFIG_RTE_LIBRTE_BNXT_PMD=y #
> > > > Compile burst-oriented Solarflare libefx-based PMD
> > > > CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n
> > > CONFIG_RTE_LIBRTE_SFC_EFX_DEBUG=n #
> > > > Compile software PMD backed by
> > > > SZEDATA2 device CONFIG_RTE_LIBRTE_PMD_SZEDATA2=n # Defines
> > > firmware
> > > > type address space.
> > > > # See documentation for supported values.
> > > > # Other values raise compile time error.
> > > > CONFIG_RTE_LIBRTE_PMD_SZEDATA2_AS=0
> > > > # Compile burst-oriented Cavium Thunderx NICVF PMD driver
> > > > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD=y
> > > > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_INIT=n
> > > > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_RX=n
> > > > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_TX=n
> > > > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_DRIVER=n
> > > > CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_MBOX=n
> > > > # Compile burst-oriented Cavium LiquidIO PMD driver
> > > > CONFIG_RTE_LIBRTE_LIO_PMD=y
> > > CONFIG_RTE_LIBRTE_LIO_DEBUG_DRIVER=n
> > > > CONFIG_RTE_LIBRTE_LIO_DEBUG_INIT=n
> > > > CONFIG_RTE_LIBRTE_LIO_DEBUG_RX=n
> > > > CONFIG_RTE_LIBRTE_LIO_DEBUG_TX=n
> > > > CONFIG_RTE_LIBRTE_LIO_DEBUG_MBOX=n
> > > > CONFIG_RTE_LIBRTE_LIO_DEBUG_REGS=n
> > > > # Compile NXP DPAA2 FSL-MC Bus
> > > > CONFIG_RTE_LIBRTE_FSLMC_BUS=n
> > > > # Compile Support Libraries for NXP DPAA2
> > > > CONFIG_RTE_LIBRTE_DPAA2_MEMPOOL=n
> > > > CONFIG_RTE_LIBRTE_DPAA2_USE_PHYS_IOVA=y
> > > > # Compile burst-oriented NXP DPAA2 PMD driver
> > > > CONFIG_RTE_LIBRTE_DPAA2_PMD=n
> > > CONFIG_RTE_LIBRTE_DPAA2_DEBUG_INIT=n
> > > > CONFIG_RTE_LIBRTE_DPAA2_DEBUG_DRIVER=n
> > > > CONFIG_RTE_LIBRTE_DPAA2_DEBUG_RX=n
> > > > CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX=n
> > > > CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX_FREE=n
> > > > # Compile burst-oriented VIRTIO PMD driver
> > > > CONFIG_RTE_LIBRTE_VIRTIO_PMD=y
> > > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_INIT=n
> > > > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_RX=n
> > > > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_TX=n
> > > > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DRIVER=n
> > > > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DUMP=n
> > > > # Compile virtio device emulation inside virtio PMD driver
> > > > CONFIG_RTE_VIRTIO_USER=y # Compile burst-oriented VMXNET3 PMD
> > > driver
> > > > CONFIG_RTE_LIBRTE_VMXNET3_PMD=n
> > > CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_INIT=n
> > > > CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_RX=n
> > > > CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX=n
> > > > CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX_FREE=n
> > > > CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_DRIVER=n
> > > > # Compile example software rings based PMD
> > > > CONFIG_RTE_LIBRTE_PMD_RING=y
> > > > CONFIG_RTE_PMD_RING_MAX_RX_RINGS=16
> > > > CONFIG_RTE_PMD_RING_MAX_TX_RINGS=16
> > > > # Compile software PMD backed by PCAP files
> > > > CONFIG_RTE_LIBRTE_PMD_PCAP=n # Compile link bonding PMD library
> > > > CONFIG_RTE_LIBRTE_PMD_BOND=y
> > > CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB=n
> > > > CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n
> > > > # QLogic 10G/25G/40G/50G/100G PMD
> > > > CONFIG_RTE_LIBRTE_QEDE_PMD=y
> > > > CONFIG_RTE_LIBRTE_QEDE_DEBUG_INIT=n
> > > > CONFIG_RTE_LIBRTE_QEDE_DEBUG_INFO=n
> > > > CONFIG_RTE_LIBRTE_QEDE_DEBUG_DRIVER=n
> > > > CONFIG_RTE_LIBRTE_QEDE_DEBUG_TX=n
> > > > CONFIG_RTE_LIBRTE_QEDE_DEBUG_RX=n
> > > > #Provides abs path/name of architecture we compile for. firmware file.
> > > > #Empty string denotes driver will use default firmware
> > > > CONFIG_RTE_LIBRTE_QEDE_FW=""
> > > > # Compile software PMD backed by AF_PACKET sockets (Linux only)
> > > > CONFIG_RTE_LIBRTE_PMD_AF_PACKET=y # Compile ARK PMD
> > > > CONFIG_RTE_LIBRTE_ARK_PMD=y CONFIG_RTE_LIBRTE_ARK_PAD_TX=y
> > > > CONFIG_RTE_LIBRTE_ARK_DEBUG_RX=n
> > > CONFIG_RTE_LIBRTE_ARK_DEBUG_TX=n
> > > > CONFIG_RTE_LIBRTE_ARK_DEBUG_STATS=n
> > > > CONFIG_RTE_LIBRTE_ARK_DEBUG_TRACE=n
> > > > # Compile WRS accelerated virtual port (AVP) guest PMD driver
> > > > CONFIG_RTE_LIBRTE_AVP_PMD=n
> > CONFIG_RTE_LIBRTE_AVP_DEBUG_RX=n
> > > > CONFIG_RTE_LIBRTE_AVP_DEBUG_TX=n
> > > CONFIG_RTE_LIBRTE_AVP_DEBUG_DRIVER=y
> > > > CONFIG_RTE_LIBRTE_AVP_DEBUG_BUFFERS=n
> > > > # Compile architecture we compile for. TAP PMD # It is enabled by
> > > > default
> > > for
> > > > Linux only.
> > > > CONFIG_RTE_LIBRTE_PMD_TAP=y
> > > > # Compile Xen PMD
> > > > CONFIG_RTE_LIBRTE_PMD_XENVIRT=n
> > > > # Compile null PMD
> > > > CONFIG_RTE_LIBRTE_PMD_NULL=y
> > > > # Compile fail-safe PMD
> > > > CONFIG_RTE_LIBRTE_PMD_FAILSAFE=y
> > > > # Do prefetch of packet data within PMD driver receive function
> > > > CONFIG_RTE_PMD_PACKET_PREFETCH=y # Compile generic crypto
> device
> > > > library CONFIG_RTE_LIBRTE_CRYPTODEV=y
> > > > CONFIG_RTE_LIBRTE_CRYPTODEV_DEBUG=n
> > > > CONFIG_RTE_CRYPTO_MAX_DEVS=64
> > > > CONFIG_RTE_CRYPTODEV_NAME_LEN=64
> > > > # Compile PMD for ARMv8 Crypto device
> > > > CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO=n
> > > > CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO_DEBUG=n
> > > > # Compile NXP DPAA2 crypto sec driver for CAAM HW
> > > > CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC=n
> > > > CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_INIT=n
> > > > CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_DRIVER=n
> > > > CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_RX=n
> > > > # Compile PMD for QuickAssist based devices
> > > > CONFIG_RTE_LIBRTE_PMD_QAT=n
> > > CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_INIT=n
> > > > CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_TX=n
> > > > CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_RX=n
> > > > CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_DRIVER=n
> > > > # Number of sessions to create in architecture we compile for.
> > > > session
> > > memory
> > > > pool # on a single QuickAssist device.
> > > > CONFIG_RTE_QAT_PMD_MAX_NB_SESSIONS=2048
> > > > # Compile PMD for AESNI backed device
> > > > CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n
> > > > CONFIG_RTE_LIBRTE_PMD_AESNI_MB_DEBUG=n
> > > > # Compile PMD for Software backed device
> > > > CONFIG_RTE_LIBRTE_PMD_OPENSSL=n
> > > CONFIG_RTE_LIBRTE_PMD_OPENSSL_DEBUG=n
> > > > # Compile PMD for AESNI GCM device
> > > > CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=n
> > > > CONFIG_RTE_LIBRTE_PMD_AESNI_GCM_DEBUG=n
> > > > # Compile PMD for SNOW 3G device
> > > > CONFIG_RTE_LIBRTE_PMD_SNOW3G=n
> > > > CONFIG_RTE_LIBRTE_PMD_SNOW3G_DEBUG=n
> > > > # Compile PMD for KASUMI device
> > > > CONFIG_RTE_LIBRTE_PMD_KASUMI=n
> > > > CONFIG_RTE_LIBRTE_PMD_KASUMI_DEBUG=n
> > > > # Compile PMD for ZUC device
> > > > CONFIG_RTE_LIBRTE_PMD_ZUC=n
> > > > CONFIG_RTE_LIBRTE_PMD_ZUC_DEBUG=n
> > > > # Compile PMD for Crypto Scheduler device
> > > > CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER=y
> > > > CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER_DEBUG=n
> > > > # Compile PMD for NULL Crypto device
> > > > CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO=y
> > > > # Compile generic event device library
> > > > CONFIG_RTE_LIBRTE_EVENTDEV=y
> CONFIG_RTE_LIBRTE_EVENTDEV_DEBUG=n
> > > > CONFIG_RTE_EVENT_MAX_DEVS=16
> > > > CONFIG_RTE_EVENT_MAX_QUEUES_PER_DEV=64
> > > > # Compile PMD for skeleton event device
> > > > CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV=y
> > > > CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV_DEBUG=n
> > > > # Compile PMD for software event device
> > > > CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV=y
> > > > CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV_DEBUG=n
> > > > # Compile PMD for octeontx sso event device
> > > > CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF=y
> > > > CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF_DEBUG=n
> > > > # Compile librte_ring
> > > > CONFIG_RTE_LIBRTE_RING=y
> > > > # Compile librte_mempool
> > > > CONFIG_RTE_LIBRTE_MEMPOOL=y
> > > > CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512
> > > > CONFIG_RTE_LIBRTE_MEMPOOL_DEBUG=n
> > > > # Compile Mempool drivers
> > > > CONFIG_RTE_DRIVER_MEMPOOL_RING=y
> > > > CONFIG_RTE_DRIVER_MEMPOOL_STACK=y
> > > > # Compile librte_mbuf
> > > > CONFIG_RTE_LIBRTE_MBUF=y
> > > > CONFIG_RTE_LIBRTE_MBUF_DEBUG=n
> > > > CONFIG_RTE_MBUF_DEFAULT_MEMPOOL_OPS="ring_mp_mc"
> > > > CONFIG_RTE_MBUF_REFCNT_ATOMIC=y
> > > > CONFIG_RTE_PKTMBUF_HEADROOM=128
> > > > # Compile librte_timer
> > > > CONFIG_RTE_LIBRTE_TIMER=y
> > > > CONFIG_RTE_LIBRTE_TIMER_DEBUG=n
> > > > # Compile librte_cfgfile
> > > > CONFIG_RTE_LIBRTE_CFGFILE=y
> > > > # Compile librte_cmdline
> > > > CONFIG_RTE_LIBRTE_CMDLINE=y
> > > > CONFIG_RTE_LIBRTE_CMDLINE_DEBUG=n
> > > > # Compile librte_hash
> > > > CONFIG_RTE_LIBRTE_HASH=y
> > > > CONFIG_RTE_LIBRTE_HASH_DEBUG=n
> > > > # Compile librte_efd
> > > > CONFIG_RTE_LIBRTE_EFD=y
> > > > # Compile librte_jobstats
> > > > CONFIG_RTE_LIBRTE_JOBSTATS=y
> > > > # Compile architecture we compile for. device metrics library
> > > > CONFIG_RTE_LIBRTE_METRICS=y # Compile architecture we compile for.
> > > > bitrate statistics library CONFIG_RTE_LIBRTE_BITRATE=y # Compile
> > > > architecture we compile for. latency statistics library
> > > > CONFIG_RTE_LIBRTE_LATENCY_STATS=y # Compile librte_lpm
> > > > CONFIG_RTE_LIBRTE_LPM=y CONFIG_RTE_LIBRTE_LPM_DEBUG=n #
> > > Compile
> > > > librte_acl CONFIG_RTE_LIBRTE_ACL=y
> > CONFIG_RTE_LIBRTE_ACL_DEBUG=n
> > > #
> > > > Compile librte_power CONFIG_RTE_LIBRTE_POWER=y
> > > > CONFIG_RTE_LIBRTE_POWER_DEBUG=n
> > > > CONFIG_RTE_MAX_LCORE_FREQS=64
> > > > # Compile librte_net
> > > > CONFIG_RTE_LIBRTE_NET=y
> > > > # Compile librte_ip_frag
> > > > CONFIG_RTE_LIBRTE_IP_FRAG=y
> > > > CONFIG_RTE_LIBRTE_IP_FRAG_DEBUG=n
> > > > CONFIG_RTE_LIBRTE_IP_FRAG_MAX_FRAG=4
> > > > CONFIG_RTE_LIBRTE_IP_FRAG_TBL_STAT=n
> > > > # Compile GRO library
> > > > CONFIG_RTE_LIBRTE_GRO=y
> > > > # Compile librte_meter
> > > > CONFIG_RTE_LIBRTE_METER=y
> > > > # Compile librte_sched
> > > > CONFIG_RTE_LIBRTE_SCHED=y
> > > > CONFIG_RTE_SCHED_DEBUG=n
> > > > CONFIG_RTE_SCHED_RED=n
> > > > CONFIG_RTE_SCHED_COLLECT_STATS=n
> > > > CONFIG_RTE_SCHED_SUBPORT_TC_OV=n
> > > > CONFIG_RTE_SCHED_PORT_N_GRINDERS=8
> > > > CONFIG_RTE_SCHED_VECTOR=n
> > > > # Compile architecture we compile for. distributor library
> > > > CONFIG_RTE_LIBRTE_DISTRIBUTOR=y # Compile architecture we compile
> > for.
> > > > reorder library CONFIG_RTE_LIBRTE_REORDER=y # Compile librte_port
> > > > CONFIG_RTE_LIBRTE_PORT=y CONFIG_RTE_PORT_STATS_COLLECT=n
> > > > CONFIG_RTE_PORT_PCAP=n # Compile librte_table
> > > > CONFIG_RTE_LIBRTE_TABLE=y CONFIG_RTE_TABLE_STATS_COLLECT=n #
> > > Compile
> > > > librte_pipeline CONFIG_RTE_LIBRTE_PIPELINE=y
> > > > CONFIG_RTE_PIPELINE_STATS_COLLECT=n
> > > > # Compile librte_kni
> > > > CONFIG_RTE_LIBRTE_KNI=y
> > > > CONFIG_RTE_LIBRTE_PMD_KNI=y
> > > > CONFIG_RTE_KNI_KMOD=y
> > > > CONFIG_RTE_KNI_KMOD_ETHTOOL=n
> > > > CONFIG_RTE_KNI_PREEMPT_DEFAULT=y
> > > > # Compile architecture we compile for. pdump library
> > > > CONFIG_RTE_LIBRTE_PDUMP=y # Compile vhost user library
> > > > CONFIG_RTE_LIBRTE_VHOST=y CONFIG_RTE_LIBRTE_VHOST_NUMA=y
> > > > CONFIG_RTE_LIBRTE_VHOST_DEBUG=n # Compile vhost PMD # To
> compile,
> > > > CONFIG_RTE_LIBRTE_VHOST should be enabled.
> > > > CONFIG_RTE_LIBRTE_PMD_VHOST=y
> > > > #Compile Xen domain0 support
> > > > CONFIG_RTE_LIBRTE_XEN_DOM0=n
> > > > # Compile architecture we compile for. test application
> > > > CONFIG_RTE_APP_TEST=y CONFIG_RTE_APP_TEST_RESOURCE_TAR=n
> > > > # Compile architecture we compile for. PMD test application
> > > > CONFIG_RTE_TEST_PMD=y
> > > CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES=n
> > > > CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS=n
> > > > # Compile architecture we compile for. crypto performance
> > > > application CONFIG_RTE_APP_CRYPTO_PERF=y # Compile architecture
> we
> > compile for.
> > > > eventdev application CONFIG_RTE_APP_EVENTDEV=y
> > > > CONFIG_RTE_EXEC_ENV_LINUXAPP=y CONFIG_RTE_ARCH_PPC_64=y
> > > > CONFIG_RTE_ARCH_64=y CONFIG_RTE_TOOLCHAIN_GCC=y # Note:
> Power
> > > doesn't
> > > > have this support # Note: Initially, all of architecture we
> > > compile for.
> > > > PMD drivers compilation are turned off on Power # Will turn on
> > > > them only
> > > after
> > > > architecture we compile for. successful testing on Power
> > > >
> > > > Please refer here for more information on running DPDK
> > > > multi-process
> > > > examples:
> > > >
> > > > https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2
> > > > Fu
> > > > rl
> > > > defense.proofpoint.com%2Fv2%2Furl%3Fu%3Dhttp-
> > > 3A__dpdk.org_doc_guides_s
> > > >
> > >
> >
> &data=02%7C01%7Cxuemingl%40mellanox.com%7C9cd11fda7a7f48df7cbd08d
> > > 4f9b4
> > > >
> > >
> >
> 86d8%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C6364080011387
> > > 51301&s
> > > >
> > data=4n76ha0PmSr3wP2c0MAo3PEVYRMKjJVcU9o5xETqhBc%3D&reserved=0
> > > > ample-5Fapp-5Fug_multi-5Fprocess.html&d=DwIFAg&c=jf_iaSHvJObTbx-
> > > siA1Z
> > > >
> > >
> >
> Og&r=4TYe4NpqlgVi0ArYpZ76FrWp7IEw8gfzq7k4itCX_Mg&m=lz_1z0LzwjqjIwu
> > > > uryoN7QPg9N-6aTY_jEvDZtMZR0o&s=gupwe5WWQ-
> > > ap2jObFko6UJymrcy4jTmF
> > > > 2r1dZ2fQN9E&e=
> > > >
> > > > Best Regards,
> > > > Xueming
> > >


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2017-09-13  8:56 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-31 14:40 [dpdk-dev] multi-process shared memory on PPC Xueming(Steven) Li
2017-09-12  7:46 ` Chao Zhu
2017-09-12  7:54   ` Xueming(Steven) Li
2017-09-12  8:01 ` Chao Zhu
2017-09-12  8:12   ` Xueming(Steven) Li
2017-09-12 18:11     ` Xueming(Steven) Li
2017-09-13  8:56       ` Xueming(Steven) Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).