2012-12-28 145 views
2

我脑子里有几个假设,请纠正我,如果我错了:KVM - DMA与直通设备

  1. 没有一个真正的IOMMU支持DMA传输将是一个安全风险,因为客人可能转移垃圾在主机内存中。
  2. 在客户机内存和直通设备之间没有真实IOMMU的有效DMA传输是不可能的。
  3. 主机操作系统是不知道相关的直通设备

的现在,任何DMA有关的东西一些问题:

    到点3相关
  • :有什么办法通过直通设备获取有关DMA传输的任何信息?
  • 如果我没有DMA重新映射,KVM会抱怨吗?
  • 是否有可能通过直通设备拒绝客人的任何与DMA有关的东西?

回答

2

在进行一些研究的同时,遇到了这个老问题,并认为我会为任何感兴趣的人发布答案。

关于要点1.没有IOMMU,你根本无法透过。 I/O设备位于内核空间中。来宾内核是一个只认为它在内核空间中运行的用户进程。

至于问题:

随着仿真设备仿真器代码拦截所有的DMA设置,并可以确保它们是有效的。借助PCI直通,寄存器读取和写入操作将直接发送到设备或设备上的SR-IOV的音频设备,因此KVM或其他客户端外部代码无法验证,发出错误或抱怨。