As shown below, running the test echo server on the Bluefield-2 smartNIC fails:
```
DBGvpp# test echo server
ssvm_server_init_memfd:258: memfd map (fd 27): File exists (errno 17)
session_vpp_event_queues_allocate:1528: failed to initialize queue segment
echo_server_create_command_fn:532: No uri provided! Using default: tcp://0.0.0.0/1234
DBGvpp# Aborted
make: *** [Makefile:519: run] Error 134
```

The mmap error (file exists) appears when MAP_FIXED_NOREPLACE was specified in flags, and the range covered by addr and length clashes with an existing mapping, which is the case in clib_mem_vm_reserve() in src/vppinfra/linux/mem.c:355. The base address of this mmap is derived from the HIGH_SEGMENT_BASEVA macro defined in src/svm/svm_common.h. By default its value is 128 << 30 == 0x2000000000 on a 64-bits system.

|Doing info proc mappings in gdb tells me that ||indeed ||this address is an already mapped range:
```
Start Addr           End Addr       Size     Offset objfile
0x1984000000       0x2184000000 0x800000000        0x0
```

What is the logic behind this value? To which value should I set it instead?

Best
Pierre Louis

|
On 2021/07/02 19:54, Pierre Louis Aublin wrote:
I do not have a dedicated Bluefield-2 at my disposal; instead, I am using one in a shared cluster, chosen at random by the cluster job scheduler. Anyway, today I tried on a different one which has the Mellanox OFED driver installed. I first had to apply this patch so that VPP compiles: https://gerrit.fd.io/r/c/vpp/+/30842 .

My startup.conf is:
```
unix { interactive cli-listen /run/vpp/cli.sock gid 0 }
dpdk { dev 0000:03:00.0 }
plugins { plugin dpdk_plugin.so { enable }
```

This time I could see and configure the network interface, but VPP crashed when launching the echo server:
```
$ sudo -E make run
dpdk             [warn  ]: not enough DPDK crypto resources
dpdk/cryptodev   [warn  ]: dpdk_cryptodev_init: Not enough cryptodevs
vat-plug/load    [error ]: vat_plugin_register: oddbuf plugin not loaded...
    _______    _        _   _____  ___
 __/ __/ _ \  (_)__    | | / / _ \/ _ \
 _/ _// // / / / _ \   | |/ / ___/ ___/
 /_/ /____(_)_/\___/   |___/_/  /_/

DBGvpp# sh int
              Name               Idx    State  MTU (L3/IP4/IP6/MPLS)     Counter          Count
HundredGigabitEthernet3/0/0       1     down         9000/0/0/0
local0                            0     down          0/0/0/0
DBGvpp# set interface ip address HundredGigabitEthernet3/0/0 192.168.10.1/24
DBGvpp# set interface state HundredGigabitEthernet3/0/0 up
DBGvpp# sh int addr
HundredGigabitEthernet3/0/0 (up):
  L3 192.168.10.1/24
local0 (dn):
DBGvpp# test echo server
ssvm_server_init_memfd:258: memfd map (fd 27): File exists (errno 17)
session_vpp_event_queues_allocate:1528: failed to initialize queue segment echo_server_create_command_fn:532: No uri provided! Using default: tcp://0.0.0.0/1234
DBGvpp# Aborted
make: *** [Makefile:519: run] Error 134
```

Please find attached the output of `sh log`.

Best
Pierre Louis

On 2021/07/01 18:38, Benoit Ganne (bganne) wrote:
What is your VPP dpdk config looks like in startup.conf? Esp. did you whitelist the device? See https://fd.io/docs/vpp/master/gettingstarted/users/configuring/startup.html#the-dpdk-section
Also, please share the output of 'show logs'.

Best
ben

-----Original Message-----
From: Pierre Louis Aublin <pierrelo...@iij-ii.co.jp>
Sent: jeudi 1 juillet 2021 11:08
To: Benoit Ganne (bganne) <bga...@cisco.com>; vpp-dev@lists.fd.io
Subject: Re: [vpp-dev] VPP on a Bluefield-2 smartNIC

The"Unsupported PCI device 0x15b3:0xa2d6 found at PCI address
0000:03:00.0" message disappears; however the network interface still
doesn't show up. Interestingly, vpp on the host also prints this
message, yet the interface can be used.

By any chance, would you have any clue on what I could try to further
debug this issue?

Best
Pierre Louis

On 2021/07/01 17:50, Benoit Ganne (bganne) via lists.fd.io wrote:
Please try https://gerrit.fd.io/r/c/vpp/+/32965 and reports if it works.

Best
ben

-----Original Message-----
From: vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> On Behalf Of Pierre
Louis
Aublin
Sent: jeudi 1 juillet 2021 07:36
To: vpp-dev@lists.fd.io
Subject: [vpp-dev] VPP on a Bluefield-2 smartNIC

Dear VPP developers

I would like to run VPP on the Bluefield-2 smartNIC, but even though I managed to compile it the interface doesn't show up inside the CLI. By
any chance, would you know how to compile and configure vpp for this
device?

I am using VPP v21.06-rc2 and did the following modifications so that
it
can compile:
```
diff --git a/build/external/packages/dpdk.mk
b/build/external/packages/dpdk.mk
index c7eb0fc3f..31a5c764e 100644
--- a/build/external/packages/dpdk.mk
+++ b/build/external/packages/dpdk.mk
@@ -15,8 +15,8 @@ DPDK_PKTMBUF_HEADROOM        ?= 128
    DPDK_USE_LIBBSD              ?= n
    DPDK_DEBUG                   ?= n
    DPDK_MLX4_PMD                ?= n
-DPDK_MLX5_PMD                ?= n
-DPDK_MLX5_COMMON_PMD         ?= n
+DPDK_MLX5_PMD                ?= y
+DPDK_MLX5_COMMON_PMD         ?= y
    DPDK_TAP_PMD                 ?= n
    DPDK_FAILSAFE_PMD            ?= n
    DPDK_MACHINE                 ?= default
diff --git a/build/external/packages/ipsec-mb.mk
b/build/external/packages/ipsec-mb.mk
index d0bd2af19..119eb5219 100644
--- a/build/external/packages/ipsec-mb.mk
+++ b/build/external/packages/ipsec-mb.mk
@@ -34,7 +34,7 @@ define  ipsec-mb_build_cmds
             SAFE_DATA=n \
             PREFIX=$(ipsec-mb_install_dir) \
             NASM=$(ipsec-mb_install_dir)/bin/nasm \
-         EXTRA_CFLAGS="-g -msse4.2" > $(ipsec-mb_build_log)
+         EXTRA_CFLAGS="-g" > $(ipsec-mb_build_log)
    endef

    define  ipsec-mb_install_cmds
```


However, when running the VPP CLI, the network interface does not show
up:
```
$ sudo -E make run
clib_sysfs_prealloc_hugepages:261: pre-allocating 6 additional 2048K
hugepages on numa node 0
dpdk               [warn  ]: Unsupported PCI device 0x15b3:0xa2d6 found
at PCI address 0000:03:00.0

dpdk/cryptodev     [warn  ]: dpdk_cryptodev_init: Failed to configure
cryptodev
vat-plug/load      [error ]: vat_plugin_register: oddbuf plugin not
loaded...
       _______    _        _   _____  ___
    __/ __/ _ \  (_)__    | | / / _ \/ _ \
    _/ _// // / / / _ \   | |/ / ___/ ___/
    /_/ /____(_)_/\___/   |___/_/  /_/

DBGvpp# show int
                 Name               Idx    State  MTU
(L3/IP4/IP6/MPLS)     Counter          Count
local0                            0     down 0/0/0/0
DBGvpp# sh hard
                 Name                Idx   Link  Hardware
local0                             0    down  local0
     Link speed: unknown
     local
```


The dpdk-testpmd application seems to start correctly though:
```
$ sudo ./build-root/install-vpp_debug-native/external/bin/dpdk-testpmd
-l 0-2 -a 0000:03:00.00 -- -i --nb-cores=2 --nb-ports=1
--total-num-mbufs=2048
EAL: Detected 8 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Detected static linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'VA'
EAL: No available 32768 kB hugepages reported
EAL: No available 64 kB hugepages reported
EAL: No available 1048576 kB hugepages reported
EAL: Probing VFIO support...
EAL: VFIO support initialized
EAL:   Invalid NUMA socket, default to 0
EAL: Probe PCI driver: mlx5_pci (15b3:a2d6) device: 0000:03:00.0
(socket
0)
mlx5_pci: Failed to allocate Tx DevX UAR (BF)
mlx5_pci: Failed to allocate Rx DevX UAR (BF)
mlx5_pci: Size 0xFFFF is not power of 2, will be aligned to 0x10000.
Interactive-mode selected
testpmd: create a new mbuf pool <mb_pool_0>: n=2048, size=2176,
socket=0
testpmd: preferred mempool ops selected: ring_mp_mc

Warning! port-topology=paired and odd forward ports number, the last
port will pair with itself.

Configuring Port 0 (socket 0)
Port 0: 0C:42:A1:A4:89:B4
Checking link statuses...
Done
testpmd>
```

Is the problem related to the failure to allocate Tx and Rx DevX UAR?
How can I fix this?


I've also tried to set the Bluefield configuration parameters from dpdk

(https://github.com/DPDK/dpdk/blob/e2a234488854fdeee267a2aa582aa082fce01d6
e/config/defconfig_arm64-bluefield-linuxapp-gcc)
as follows:
```
diff --git a/build-data/packages/vpp.mk b/build-data/packages/vpp.mk
index 7db450e05..91017dda0 100644
--- a/build-data/packages/vpp.mk
+++ b/build-data/packages/vpp.mk
@@ -32,7 +32,8 @@ vpp_cmake_args += -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON
    endif
    ifeq (,$(TARGET_PLATFORM))
    ifeq ($(MACHINE),aarch64)
-vpp_cmake_args += -DVPP_LOG2_CACHE_LINE_SIZE=7
+vpp_cmake_args += -DVPP_LOG2_CACHE_LINE_SIZE=6
    endif
    endif

diff --git a/build/external/packages/dpdk.mk
b/build/external/packages/dpdk.mk
index 70ff5c90e..e2a64e67c 100644
--- a/build/external/packages/dpdk.mk
+++ b/build/external/packages/dpdk.mk
@@ -15,13 +15,20 @@ DPDK_PKTMBUF_HEADROOM        ?= 128
    DPDK_USE_LIBBSD              ?= n
    DPDK_DEBUG                   ?= n
    DPDK_MLX4_PMD                ?= n
-DPDK_MLX5_PMD                ?= n
-DPDK_MLX5_COMMON_PMD         ?= n
+DPDK_MLX5_PMD                ?= y
+DPDK_MLX5_COMMON_PMD         ?= y
    DPDK_TAP_PMD                 ?= n
    DPDK_FAILSAFE_PMD            ?= n
    DPDK_MACHINE                 ?= default
    DPDK_MLX_IBV_LINK            ?= static

+# bluefield specific
+DPDK_ARCH_ARM_TUNE           ?= "cortex-a72"
+DPDK_MAX_NUMA_NODES          ?= 1
+DPDK_CACHE_LINE_SIZE         ?= 64
+DPDK_EAL_NUMA_AWARE_HUGEPAGES ?= n
+DPDK_LIBRTE_VHOST_NUMA       ?= n
+
    dpdk_version                 ?= 21.05
    dpdk_base_url                ?= http://fast.dpdk.org/rel
    dpdk_tarball                 := dpdk-$(dpdk_version).tar.xz
@@ -178,6 +185,11 @@ define dpdk_config_cmds
           echo "DPDK post meson configuration" && \
           echo "Altering rte_build_config.h" && \
           $(call dpdk_config,PKTMBUF_HEADROOM) && \
+       $(call dpdk_config,ARCH_ARM_TUNE) && \
+       $(call dpdk_config,MAX_NUMA_NODES) && \
+       $(call dpdk_config,CACHE_LINE_SIZE) && \
+       $(call dpdk_config_def,EAL_NUMA_AWARE_HUGEPAGES) && \
+       $(call dpdk_config_def,LIBRTE_VHOST_NUMA) && \
           $(call dpdk_config_def,USE_LIBBSD)
    endef
```

Unfortunately this led to an error when launching the CLI:
```
$ sudo -E make run
dpdk               [warn  ]: Unsupported PCI device 0x15b3:0xa2d6 found
at PCI address 0000:03:00.0

0: dpdk_buffer_pool_init: failed to create normal mempool for numa node
0
$
```

Thank you very much





-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#19718): https://lists.fd.io/g/vpp-dev/message/19718
Mute This Topic: https://lists.fd.io/mt/83910198/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to