我有几个假设,如果我错了,请纠正我:
现在有一些问题:
在做一些研究时遇到了这个老问题,并认为我会为有兴趣的人提供答案。
关于第1点。没有IOMMU,您根本无法进行直通。 I / O设备在内核空间中。来宾内核是一个用户进程,仅认为它在内核空间中运行。
关于问题:
使用仿真设备,仿真器代码将拦截所有DMA设置,并可以确保它们是有效的。通过PCI直通,寄存器的读写直接进入设备,或者直接进入设备上用于SR-IOV的VF,因此KVM或来宾外部的任何其他代码都没有机会进行验证,发出错误或投诉。