vfio

VFIO简介

Documentation/vfio.txt

还是不理解IOMMU、北桥、PCI的MMIO和ioremap

file:///C:/Users/shaohefe/Downloads/vt-directed-io-spec.pdf  <Intel® Virtualization Technology for Directed I/O>

 

已经有清晰的认识了。

+-------------------------------------------+
|                                           |
|             VFIO Interface                |
|                                           |
+---------------------+---------------------+
|                     |                     |
|     vfio_iommu      |      vfio_pci       |
|                     |                     |
+---------------------+---------------------+
|                     |                     |
|    iommu driver     |    pci_bus driver   |
|                     |                     |
+---------------------+---------------------+

VFIO要依赖IOMMU,目前主要针对PCI设备(mdev也是VFIO框架)

主要提供DMA remmaping 和 Interrupt remmapping.

此外IOMMU还要进行设备的隔离,停供安全特性。IOMMU提供DMA隔离的最小硬件单元(group)

同一个group的device必须给一个VM(等同于一个Container )。

multi-function设备在物理硬件上就是互联的, 他们可以互相访问对方的数据,不能拆分,只能放在一个group中。

iommu driver提供不同厂家(intel、AMD和intel)硬件平台相关的实现

 

 

 

 

https://kernelgo.org/vfio-introduction.html

最底层的驱动是iommu driver和pci_bus driver.

1. IOMMU

iommu driver提供不同厂家(intel、AMD和intel)硬件平台相关的实现

2. PCI BUS

进行设备的注册和反注册等操作

 

中间层的驱动是iommu driver和pci_bus driver.

1. vfio_iommu 

VFIO对iommu层的统一封装主要用来实现DMAP Remapping的功能,即管理IOMMU页表的能力

2. vfio_pci

进行PCI配置空间、Bar空间重和Interrupt Remapping的操作。

最顶层VFIO Interface 提供用户的统一操作接口。

 

VFIO的操作

https://www.jianshu.com/p/bfbb5095d8fd

这个步骤很详细,cloud-hypervisor的PCI管理,就是这个操作流程。

VFIO ——将 DMA 映射暴露给用户态   详细介绍了内存访问的流程

 

 

 

 

 

 

 

Linux iommu和vfio概念空间解构    介绍了ARM的SMMU

IOMMU & iomap &VFIO & uio  

 

[转]vfio概述(vfio/iommu/device passthrough) 最综合的总结。

 

 

中断重映射

其实主要是安全性。

IOMMU之Interrupt Remapping   

Intel VT-d(3)- 中断重映射  

 

 

iommu技术综述  

名词解析:

RC:    

PCI Express(PCIe)系统中,根复合体root complex)设备将处理器内存子系统连接到由一个或多个交换设备组成的PCI Express交换结构。

类似PCI系统中的主机桥(Host Bridge),根复合体代表处理器生成事务请求,通过本地总线相互连接。根复合体功能可以以分立设备实现,也可以在处理器中集成。一个根复合体可能包含多个PCI Express端口,且可将多个交换设备连接到根复合体的端口或级联的端口。[2]

 

 

 

 
 

 

posted @ 2017-06-10 21:37  lvmxh  阅读(1010)  评论(0编辑  收藏  举报