DPDK MLX5 PMD驱动程序探针问题

时间:2019-04-03 01:22:09

标签: networking linux-device-driver dpdk

我无法将mlx5 pmd驱动程序与服务器上已安装的某些Mellanox NIC一起使用。我在EAL初始化期间收到的错误是:

et_mlx5:没有Verbs设备与PCI设备0000:03:00.0相匹配,是否已加载内核驱动程序?

我当前使用的DPDK版本是:DPDK-STABLE-18.11

我已经安装了OFED最新版本:

mlnx-zh-4.5-1.0.1.0-ubuntu16.04-x86_64

我已经执行了ib_uverbs内核模块的modprobe

这是我正在使用的内核版本

src/hello

以下是NIC型号:

build/hello

NIC使用的固件版本:

Mobile.startApplication('C:/user/...', true)

完整的初始化输出为:

moragalu@server:~$ uname -r
4.4.0-143-generic

内核中加载的当前模块:

moragalu@server:~$ lspci | grep Mell
03:00.0 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]
03:00.1 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]
06:00.0 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]
06:00.1 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]

1 个答案:

答案 0 :(得分:0)

在将RDMA核心库用于ibverbs依赖项时,我遇到了同样的问题。过去,我设法在mlx5_core.c中找到一个错误(将探测函数中的队列数硬编码为8,这很神奇),但是我不确定这对您来说是否是一个问题。

无论哪种方式,当我安装最新的Mellanox OFED Drivers时问题都消失了,因此尝试这样做是个好主意。只需记住使用以下命令进行安装即可:

mlnxofedinstall --dpdk --upstream-libs

edit:刚注意到您已经安装了驱动程序-确保已按照上面的步骤进行安装。您还可以做一件事:检查其输出(与-libverbs一起编译):

#include <stdio.h>
#include <errno.h>
#include <string.h>
int main() {
        struct ibv_device ** devices;
        int num;
        struct ibv_context * ctx;
        devices = ibv_get_device_list(&num);
        int i;
        if(devices[0] == NULL)
                printf("devices is null\n");
        printf("got %d devices\n", num);
        for (i=0;i<num;i++) {
                printf(ibv_get_device_name(devices[i]));
                printf("\n");
                ctx = ibv_open_device(devices[i]);
                if (ctx == NULL)
                        printf("ctx is null \n");
                else
                        printf("device opened\n");
        }
        if (errno)
                printf("ERROR: %s\n", strerror(errno));
        ibv_free_device_list(devices);
return 0;
}

如果它没有列出任何设备,至少您会知道这是动词驱动程序的问题,而不是DPDK本身。