---
title: CX4网卡配置问题导致DPDK无法运行-官方技术文章-鲲鹏社区
description: CX4网卡配置问题导致DPDK无法运行
keywords: CX,DPDK,网卡配置问题,导致,无法运行,官方技术文章,鲲鹏社区,环境信息
url: https://www.hikunpeng.com/developer/techArticles/20251021-1?envFlag=1
section: (其他)
---

# CX4网卡配置问题导致DPDK无法运行-官方技术文章-鲲鹏社区

URL: https://www.hikunpeng.com/developer/techArticles/20251021-1?envFlag=1
描述: CX4网卡配置问题导致DPDK无法运行
关键词: CX,DPDK,网卡配置问题,导致,无法运行,官方技术文章,鲲鹏社区,环境信息

官方技术文章 [了解详情](https://www.hikunpeng.com/zh/developer/techArticles)

CX4网卡配置问题导致DPDK无法运行

CX4网卡配置问题导致DPDK无法运行

DPDK

发表于 2025/10/21

0

作者 |刘坤

## 环境信息

#### 硬件信息

| 环境 | 基准环境 | 对比环境 |
| --- | --- | ---|
| 服务器型号 | TaiShan 200 2280 | TaiShan 200 2280 |
| CPU型号 | Kunpeng 920 | Kunpeng 920-5250 |
| 内存 | NA | 12*32G 2933MHz |
| 网卡型号 | 1*CX4网卡 | 2*CX4网卡 |

#### 操作系统及软件信息

基准环境和对比环境的软件配置相同。

| 操作系统版本 | openEuler 20.03 LTS-SP1 |
| --- | ---|
| 内核版本 | 4.19.90-2109.1.0.0108.oe1.aarch64 |
| 编译器版本 | GCC-7.3.0 |
| DPDK版本 | DPDK-18.11.11 |
| 网卡驱动版本 | 升级前5.0-0，升级后5.4-3.6.8 |
| 网卡固件版本 | 14.28.1300 |

## 组网方式

版本测试都有两台设备对接，其中一端启动testpmd环回，另一端使用pktgen发包测试。

图1组网方式

## 环境部署

DPDK测试需要依赖一些库文件和相关命令，可使用如下方法进行安装：

可使用系统镜像ISO配置本地源，也可以通过网络或VPN配置官方yum源。

1. 上传操作系统镜像ISO到/home下。

优先选用everything版本镜像，包含软件包相对较多。
2. 挂载镜像。

```
mkdir /home/localrepomount /home/ openEuler-20.03-LTS-SP1-everything-aarch64-dvd.iso /home/localrepo
```
3. 配置yum.repo文件。

```
mv /etc/yum.repos.d /etc/yum.repos.d-bakmkdir /etc/yum.repos.dvim /etc/yum.repos.d/local.repo 
```

写入如下配置并保存退出。

```
[localrepo]name=localrepobaseurl=file:///home/localrepogpgcheck=0enabled=1
```
4. 刷新yum源缓存。

```
yum clean && yum makecache
```
5. 安装依赖库。

```
yum install -y gcc gcc-c++ rdma-core rdma-core-devel libnl3-devel numactl numactl-devel libpcap-devel readline-devel libnml-devel
```

## 编译DPDK

官方下载页面：http://core.dpdk.org/download/1、下载源码。从官网下载DPDK-18.11.11源码。`wget http://fast.dpdk.org/rel/dpdk-18.11.11.tar.xz`2、解压并进入源码目录。`tar -xf dpdk-18.11.11.tar.xz``cd dpdk-stable-18.11.11/config/ && ls`3、修改common_base文件。开启IGB_UIO、VFIO驱动选项和CX4网卡驱动选项（修改为y），保存配置文件。`vim common_base`4、进入usertools文件夹，运行dpdk-setup.sh脚本。`cd ../usertools ``./ dpdk-setup.sh`Kunpeng920处理器是arm64-armv8a芯片架构，采用gcc编译器安装。输入选项“2”，然后开始编译。等待编译完成。使能IGB_UIO、VFIO驱动，输入选项“18”“19”。最后输入“35”退出。5、查看网卡信息。`./dpdk-devbind.py -s`

## 问题分析

问题现象及复现

#### 问题现象

### 编译安装DPDK后，用DPDK自带的helloworld示例程序测试，用于验证DPDK环境是否正常。测试过程报错截图：网卡驱动状态截图：

#### 复现条件

### 在1-环境信息的环境下，并准备好3-环境部署后，执行helloworld示例程序测试，问题可以复现。

#### 复现过程

#### 1、编译生成DPDK自带的helloworld示例程序并运行。

#### 2、指定用户态驱动igb_uio并绑定bus号为0000:01:00.1的网卡。

#### 3、执行helloworld示例程序测试，指定用户态驱动的网口出现问题，其余网口正常。

#### 4、用DPDK自带test-pmd测试程序验证，指定用户态驱动的网口出现问题，其余网口正常。

### 具体分析

从helloworld测试报错打印可以看出，net_mlx5需要用到的bus号0000:01:00.0被占用。应该是用户态驱动igb_uio并绑定网口时占用了。原因见下图：

绑定网口前：

绑定网口后：

如果是这样的话，用网口创建VF，创建VF的同时会生成新的bus号，把VF绑定到用户态驱动igb_uio，就不会和网口内核态驱动有bus号冲突。

验证步骤如下：

1、创建VF。

`echo 1 > /sys/class/net/enp1s0f1/device/sriov_numvfs`

2、dpdk命令查看生成的VF。

`./dpdk-devbind.py -s`

3、指定用户态驱动igb_uio并绑定bus号为0000:01:2的VF。

4、执行helloworld示例程序测试。

5、切换为vfio驱动。

运行失败，说明存在其他地方被限制。

### 验证驱动版本兼容问题IGB_UIO、VFIO驱动都是虚拟化强相关特性，使能硬件和操作系统虚拟化参数选项，高版本的网卡驱动兼容性更高，也一并升级下。

#### 升级网卡驱动

### ./mlnxofedinstall --dpdk

#### 修改系统内核启动参数

#### 1、添加grub选项。

#### 在grub文件中添加：

#### iommu.passthrough=1 pci=pcie_bus_perf pciehp.pciehp_force=1

#### 2、重启后进BIOS确认smmu为enabled（硬件虚拟化开关）。

#### 3、重启后网卡驱动升级成功。

#### 验证切IGB_UIO和VFIO驱动是否正常

### 升级网卡驱动重启后，需要重新加载IGB_UIO、VFIO驱动。1、重新加载IGB_UIO驱动。存在报错信息。2、加载vfio驱动。3、切vfio驱动，查看dpdk是否接管正常。4、挂载大页内存。5、执行helloworld。6、重新编译dpdk后执行helloworld。结论：不是驱动版本问题。验证DPDK程序自动切换功能默认使用mlx5_core的网卡，无论是helloworld还是test-pmd测试都正常。推断CX4网卡已经不需要切驱动，可用DPDK程序直接接管（自动切换）。不手动切换驱动，物理网口和VF用helloworld测试正常。不手动切换驱动，物理网口和VF用test-pmd测试正常。DPDK官方文档说明：https://doc.dpdk.org/guides/nics/mlx5.html结合网络相关资料分析：1、不使用igb_uio.ko。https://github.com/xiangp126/dpdk/blob/master/mellanox/Mellanox.md2、启动DPDK之前，不需要为Mellanox绑定igb_uio或者uio_pci_generic等用户态驱动（https://zhuanlan.zhihu.com/p/484252751）。3、网卡使用mlx5_core驱动之后就不再依赖内核的UIO框架，Mellanox会使用它特有的mlx5_core驱动来完成Mellanox 网卡（PCI 设备）的注册。https://tool.4xseo.com/a/2118.html定位结论CX4网卡使用mlx5_core驱动来完成Mellanox 网卡（PCI 设备）的注册，和华为或因特尔网卡需要切igb_uio或vfio-pci驱动有差异。现场把网卡绑定到用户态驱动igb_uio，导致igb_uio分配的bus号和mlx5_core驱动的bus号冲突，引发问题。内部环境验证，CX4网卡不切驱动情况下，可由DPDK程序直接接管物理网口或VF。DPDK官方文档说明：https://doc.dpdk.org/guides/nics/mlx5.html

本页内容
