VFIO - Virtual Function I/O
原文中文,约13200字,阅读约需32分钟。发表于: 。VFIO - Virtual Function I/O背景VFIO 是 Linux 内核中的一个功能,目的是把 PCIe 设备暴露给用户态的程序,进而可以暴露给虚拟机内的系统,也就是常说的虚拟机 PCIe 直通。为了保证安全性,VFIO 还会配置好 IOMMU,保证用户态程序无法利用设备的 DMA 访问到其他地址空间的数据。本文探讨 VFIO 暴露的用户态 API 以及如何在用户态中使用...
VFIO是Linux内核中的一个功能,可以将PCIe设备暴露给用户态程序,实现虚拟机PCIe直通。VFIO提供了一系列用户API,可以在用户态中直接控制PCIe设备。VFIO的用户API定义在include/uapi/linux/vfio.h中,通过ioctl调用来初始化VFIO设备。VFIO提供了访问Configuration空间和BAR空间、DMA映射、中断设置等功能。QEMU通过VFIO实现了PCIe设备直通,将VFIO设备挂载到虚拟PCIe总线上,并通过回调函数实现对BAR空间和Configuration空间的访问。VFIO还可以与DPDK框架一起使用,实现在用户态运行网卡驱动。与UIO驱动相比,VFIO处理了IOMMU映射,更安全可靠。