跑DPDK app的时候,之前我都是使用igb_uio,而这次换了amd的新平台后,发现无法收发包。
如下:
testpmd> stop
Telling cores to stop...
Waiting for lcores to finish...
---------------------- Forward statistics for port 0 ----------------------
RX-packets: 0 RX-dropped: 0 RX-total: 0
TX-packets: 0 TX-dropped: 0 TX-total: 0
----------------------------------------------------------------------------
---------------------- Forward statistics for port 1 ----------------------
RX-packets: 0 RX-dropped: 0 RX-total: 0
TX-packets: 0 TX-dropped: 0 TX-total: 0
----------------------------------------------------------------------------
+++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++
RX-packets: 0 RX-dropped: 0 RX-total: 0
TX-packets: 0 TX-dropped: 0 TX-total: 0
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Done.
于是打算改用vfio-pci试一试,然而出现了如下的情况:
EAL: 0000:42:00.0 VFIO group is not viable! Not all devices in IOMMU group bound to VFIO or unbound
EAL: Requested device 0000:42:00.0 cannot be used
经过研究发现,我这边这是因为multi-fuction的问题,我把网卡的multi-function关闭后就可以正常收发包了。
但是也有遇到过有些网卡不能关闭,这时就可以考虑关闭iommu。
首先可以通过以下cmd来确认一下是否开启了iommu。
dmesg | grep -i iommu
如果开启了iommu,那么继续。
有如下两个方式:
1. 在bios里关闭
在您的 BIOS 中将“IOMMU”设置为“禁用”。注意:在戴尔系统上,应禁用“x2APIC 模式”以禁用“IOMMU”。
2. Grub
/etc/default/grub 尾部附加
GRUB_CMDLINE_LINUX=amd_iommu=off
然后
grub-mkconfig -o /boot/grub/grub.cfg
我用的是Ubuntu,然后重启即可。
关闭了iommu之后,我的平台就可以跑igb_uio了。
如果觉得这篇文章有用的话,可以点赞、评论或者收藏,万分感谢,goodbye~