2

我正在考虑使用 vfio 而不是uio从 QEMU 来宾中的用户空间代码访问 PCI 设备。

作为 x86_64 QEMU来宾运行的 Linux 是否可以使用vfio驱动程序使在来宾中运行的用户空间程序可以访问模拟的 PCI 设备?

我不清楚,因为 vfio 似乎大量使用了硬件虚拟化功能(例如 IOMMU),而且我不确定 QEMU 是否将这些模拟到使这项工作所需的程度。

请注意,我并没有尝试将真正的 PCI 设备传递给 QEMU 来宾,这是 vfio 传统上使用的(由 QEMU 本身)。相反,我正在调查 vfio在 guest 的上下文中是否是 uio 的合适替代品。

4

1 回答 1

2

该问题没有提及您可能已经遇到过的有关访客中vfio支持的任何详细说明。也就是说,在答案中解决这个问题会很有用。

QEMU 确实提供了 VT-d 仿真(guest vIOMMU)。但是,启用此功能需要选择 Q35 平台类型。例如,可以使用以下选项在 QEMU 中启用 vIOMMU 设备,这些选项需要在启动时传递给x86_64-softmmu/qemu-system-x86_64应用程序:

-machine q35,accel=kvm,kernel-irqchip=split -device intel-iommu,intremap=on

这将提供一种将来宾内的设备绑定到vfio-pci 的方法。更多信息可以在 QEMU wiki 上找到:Features/VT-d

如果您确实尝试遵循这种方法并遇到故障,那么如果您对您的精确观察有所了解,那就太好了。

于 2018-09-03T02:10:40.527 回答