首页 > 解决方案 > 无法通过 sysfs 使用 vfio-pci 创建 VF

问题描述

使用 Ubuntu 20.04.2 LTS 和 DPDK 21.02 并遵循 DPDK 文档,我执行了这些命令

sudo modprobe vfio-pci enable_sriov=1
dpdk-devbind.py --bind=vfio-pci 0000:02:00.0
echo 1 > /sys/bus/pci/devices/0000:02:00.0/sriov_numvfs

但试图创建一个 VF 我有这个错误

alessio@ganimede:~$ sudo su
root@ganimede:/home/alessio# echo 1 > /sys/bus/pci/devices/0000:02:00.0/sriov_numvfs
bash: echo: write error: No such file or directory

即使这样

cd /sys/bus/pci/devices/0000:02:00.0
echo 1 > sriov_numvfs

即使 /sys/bus/pci/devices/0000:02:00.0/sriov_numvfs 存在。注意:使用 dmesg 我看到这个错误

[ 1071.155309] vfio-pci 0000:02:00.0: Driver does not support SRIOV configuration via sysfs

如果我尝试不绑定 vfio-pci 驱动程序而只使用内核一(ixgbe),它可以工作。但是在我的进程上使用这些 VF 作为 DPDK 端口,它不起作用,我必须检查但似乎没有收到更多的数据包。

注意:没有 VF,我的 DPDK 进程使用 vfio-pci 驱动程序工作。

新信息:这样就可以了!有一个错误,MAC 错误,使用 VF 这个错误导致应用程序失败。所以这个问题失去了它的兴趣,以这种方式起作用,只是好奇为什么 DPDK 文档上的建议程序不起作用。

它是一个主机操作系统,网卡信息是:

driver: ixgbe
version: 5.1.0-k
firmware-version: 0x800003e1

猫 /proc/cmdline

BOOT_IMAGE=/vmlinuz-5.4.0-72-generic root=/dev/mapper/ubuntu--vg-ubuntu--lv ro maybe-ubiquity default_hugepagesz=1G hugepagesz=1G hugepages=8 hugepagesz=2M hugepages=1024 intel_iommu=on iommu=pt isolcpus=2,3,4,5,6,7,8,9

任何想法?谢谢

标签: dpdk

解决方案


对于 Intel NIC,如 82599、X522 和其他 VF(虚拟功能)端口,当它与igb_uio 等绑定ixgbe或驱动程序时,可以从 PF(物理功能)端口创建。uio由于配置管理队列以预留 rx 和 tx 队列并为 VF 端口配置参数需要 PF 驱动程序。

从 ixgbe (kernel) 取消绑定 |igb_uio (dpdk) 失去这样做的能力。一个映射到vfio-pci基本功能和主机通过。因此第一步dpdk-devbind.py --bind=vfio-pci 0000:02:00.0,是导致 SRIOV VF 功能松动。

解决方案:请将设备绑定回内核ixgbe并创建VF。VF 可以绑定vfio-pci用于 PCIe 直通或在用户空间上运行。


推荐阅读