DPDK 网卡驱动 之 VFIO

        关于 VFIO 我遇到很多问题,也了解很多内容,所以想单独写一篇。VFIO 依赖于vfio_pci 模块,通常情况下,所有主流操作系统发行版默认都已包含 VFIO 内核模块。通常需要自己检查一下,如果没有安装的话就手动 insmod 一下。

VFIO 运行环境

1. 判断 VFIO IOMMU 是否支持

  • BIOS 是否开启虚拟化:
  • Intel - VT 虚拟化
  • AMD - VT 虚拟化
  •  系统内核是否支持
  • 对于 Intel CPU,使用cat /proc/cpuinfo | grep vmx,有输出说明支持;
  • 对于 AMD CPU,使用cat /proc/cpuinfo | grep svm,有输出则支持 。
  • 内核模块是否加载

如果你使用的是主流的发行版本,那你可以通过检查是静态编译到内核,还是以模块的方式加载,还是压根就没有添加需要的模块。主要有:vfio_pci 和 iommu。

whc@whc-virtual-machine:~$ cat /boot/config-$(uname -r) | grep VFIO_PCI
CONFIG_VFIO_PCI_CORE=y
CONFIG_VFIO_PCI_MMAP=y
CONFIG_VFIO_PCI_INTX=y
CONFIG_VFIO_PCI=y
CONFIG_VFIO_PCI_VGA=y
CONFIG_VFIO_PCI_IGD=y

whc@whc-virtual-machine:~$ cat /boot/config-$(uname -r) | grep IOMMU
CONFIG_IRQ_MSI_IOMMU=y
CONFIG_GART_IOMMU=y
CONFIG_VFIO_IOMMU_TYPE1=y
CONFIG_VFIO_NOIOMMU=y
CONFIG_IOMMU_IOVA=y
CONFIG_IOMMU_API=y
CONFIG_IOMMU_SUPPORT=y
# Generic IOMMU Pagetable Support
CONFIG_IOMMU_IO_PGTABLE=y
# end of Generic IOMMU Pagetable Support
# CONFIG_IOMMU_DEBUGFS is not set
# CONFIG_IOMMU_DEFAULT_DMA_STRICT is not set
CONFIG_IOMMU_DEFAULT_DMA_LAZY=y
# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
CONFIG_IOMMU_DMA=y
CONFIG_IOMMU_SVA_LIB=y
CONFIG_AMD_IOMMU=y
CONFIG_AMD_IOMMU_V2=m
CONFIG_INTEL_IOMMU=y
CONFIG_INTEL_IOMMU_SVM=y
# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
CONFIG_INTEL_IOMMU_FLOPPY_WA=y
# CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON is not set
CONFIG_HYPERV_IOMMU=y
CONFIG_VIRTIO_IOMMU=y
CONFIG_IOMMU_HELPER=y
# CONFIG_IOMMU_DEBUG is not set

如果是模块的方式:

手动 insmod vfio_pci 

  • IOMMU是否开启

我发现我的系统默认是没有开启的

whc@whc-virtual-machine:~$ cat  /sys/module/vfio/parameters/enable_unsafe_noiommu_mode
N
whc@whc-virtual-machine:~$ cat  /sys/module/vfio/parameters/enable_unsafe_noiommu_mod

你可能感兴趣的:(DPDK,linux,网络)