DPDK start app mlx5_common: Failed to create TIS using DevX

After installing the network card driver and DPDK environment, start the dpdk-helloword program, and load the mlx5 program to report an error(安装完网卡驱动和DPDK环境后启动dpdk-helloword程序,加载mlx5程序报错)。

Q:

  1. What is DevX, can I turn off the function?(DevX是什么功能,我能关闭它吗?)
  2. How to turn off DevX and what is the impact of it(怎么关闭,关闭了有什么影响?)
  3. Is there any other solution?(是否有其他解决方案?)

INFO:

  1. NIC model: mcx653106A-ECAT (‘MT28908 Family [ConnectX-6] 101b’ if=ib0 drv=mlx5_core unused=)
  2. drivers: MLNX_OFED_LINUX-5.5-1.0.3.2-rhel8.4-x86_64
  3. dpdk version: dpdk-21.11
  4. ibstat:

CA ‘mlx5_3’

CA type: MT4123

Number of ports: 1

Firmware version: 20.32.1010

Hardware version: 0

Node GUID: 0x043f720300fea761

System image GUID: 0x043f720300fea760

Port 1:

State: Down

Physical state: Polling

Rate: 10

Base lid: 65535

LMC: 0

SM lid: 0

Capability mask: 0x2651e848

Port GUID: 0x043f720300fea761

Link layer: InfiniBand

  1. OS: CentOS Linux release 8.4.2105 4.18.0-305.3.1.el8.x86_64
  2. install ofed command: ./mlnxofedinstall --upstream-libs --dpdk --add-kernel-support

ERR INFO:

EAL: Probe PCI driver: mlx5_pci (15b3:101b) device: 0000:5e:00.0 (socket 0)

mlx5_common: probe device “0000:5e:00.0”.

mlx5_common: RTE_MEM is selected.

mlx5_common: Checking device “mlx5_3”…

mlx5_common: Checking device “mlx5_2”…

mlx5_common: Checking device “mlx5_1”…

mlx5_common: Checking device “mlx5_0”…

mlx5_common: Dev information matches for device “mlx5_0”.

mlx5_common: DevX is supported.

mlx5_common: initialized B-tree 0x1003e9dc1 with table 0x1003e7500

EAL: Mem event callback ‘MLX5_MEM_EVENT_CB:(nil)’ registered

mlx5_common: Netlink socket send buffer: 212992

mlx5_common: Netlink socket recv buffer: 212992

mlx5_common: Netlink socket send buffer: 212992

mlx5_common: Netlink socket recv buffer: 212992

mlx5_net: Checking device “mlx5_3”

mlx5_net: Checking device “mlx5_2”

mlx5_net: Checking device “mlx5_1”

mlx5_net: Checking device “mlx5_0”

mlx5_net: PCI information matches for device “mlx5_0”

mlx5_net: No E-Switch support detected.

mlx5_net: naming Ethernet device “0000:5e:00.0”

mlx5_common: Failed to create TIS using DevX

mlx5_net: Failed to TIS 0 for bonding device mlx5_0.

mlx5_net: TIS allocation failure

mlx5_net: probe of PCI device 0000:5e:00.0 aborted after encountering an error: Cannot allocate memory

mlx5_common: Failed to load driver mlx5_eth

EAL: Mem event callback ‘MLX5_MEM_EVENT_CB:(nil)’ unregistered

mlx5_common: freeing B-tree 0x1003e9dc1 with table 0x1003e7500

EAL: Requested device 0000:5e:00.0 cannot be used

EAL: PCI device 0000:5e:00.1 on NUMA socket 0

EAL: probe driver: 15b3:101b mlx5_pci

EAL: Probe PCI driver: mlx5_pci (15b3:101b) device: 0000:5e:00.1 (socket 0)

mlx5_common: probe device “0000:5e:00.1”.

mlx5_common: Checking device “mlx5_3”…

mlx5_common: Checking device “mlx5_2”…

mlx5_common: Checking device “mlx5_1”…

mlx5_common: Dev information matches for device “mlx5_1”.

mlx5_common: DevX is supported.

mlx5_common: initialized B-tree 0x1003e9dc1 with table 0x1003e7500

EAL: Mem event callback ‘MLX5_MEM_EVENT_CB:(nil)’ registered

mlx5_common: Netlink socket send buffer: 212992

mlx5_common: Netlink socket recv buffer: 212992

mlx5_common: Netlink socket send buffer: 212992

mlx5_common: Netlink socket recv buffer: 212992

mlx5_net: Checking device “mlx5_3”

mlx5_net: Checking device “mlx5_2”

mlx5_net: Checking device “mlx5_1”

mlx5_net: PCI information matches for device “mlx5_1”

mlx5_net: Checking device “mlx5_0”

mlx5_net: No E-Switch support detected.

mlx5_net: naming Ethernet device “0000:5e:00.1”

mlx5_common: Failed to create TIS using DevX

mlx5_net: Failed to TIS 0 for bonding device mlx5_1.

mlx5_net: TIS allocation failure

mlx5_net: probe of PCI device 0000:5e:00.1 aborted after encountering an error: Cannot allocate memory

mlx5_common: Failed to load driver mlx5_eth

EAL: Mem event callback ‘MLX5_MEM_EVENT_CB:(nil)’ unregistered

mlx5_common: freeing B-tree 0x1003e9dc1 with table 0x1003e7500

EAL: Requested device 0000:5e:00.1 cannot be used

EAL: PCI device 0000:af:00.0 on NUMA socket 1

EAL: probe driver: 15b3:101b mlx5_pci

EAL: Probe PCI driver: mlx5_pci (15b3:101b) device: 0000:af:00.0 (socket 1)

mlx5_common: probe device “0000:af:00.0”.

Hi,

DEVX API is the modern way to utilize direct access to HCA. More info - GitHub - Mellanox/devx. Mellanox OFED version 5.x use it.

Check your device status - it is down and in pulling state. Assuming you are working in InfiniBand mode, you need running Subnet Manager on the fabric.

If the node connected to Ethernet fabric/switch, convert the port to Ethernet using mlxconfig command. Check Mellanox OFED user manual and MFT ( Mellanox Firmware Tools) manuals for additional info.

#mlxconfig -d /dev/mst/mt4119_pciconf0 s LINK_TYPE_<1|2>=2

If you are using bonding , undo the configuration and start with a single port.

Another good think that you can do is to recompile DPDK with debugging information and trace failure to the line in the code and go from there. To add debug information to DPDK, use meson —buildtype=debug parameters. For additional info, check DPDK documentation.

Thank you very much!

I solved this problem by convert the port working mode to Ethernet.