KVM - 带有直通设备的DMA

时间:2012-12-28 21:40:28

标签: device qemu kvm dma pass-through

我有几个假设,请纠正我,如果我错了:

  1. 如果没有真正的IOMMU,DMA-Transfer会带来安全风险,因为来宾可以在主机内存中传输垃圾。
  2. 无法在没有真正的IOMMU的客户存储器和直通设备之间进行有效的DMA传输。
  3. Host-Os不知道任何与直通设备相关的DMA相关内容

  4. 现在有些问题:

    • 与第3点有关:有没有办法通过直通设备获取有关DMA传输的任何信息?
    • 如果我没有进行DMA重映射,KVM是否会抱怨它?
    • 是否有可能通过passthrough设备拒绝任何与DMA相关的东西?

1 个答案:

答案 0 :(得分:3)

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

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

关于问题:

使用仿真设备,仿真器代码会拦截所有DMA设置,并确保它们有效。通过PCI直通,寄存器读取和写入将直接发送到设备,或者发送到设备上的VF以用于SR-IOV,因此KVM或guest虚拟机外的任何其他代码都无法验证,出错或抱怨。