intel_iommu=on,但没有iommu_groups

dup*_*_id 7 linux virtualization graphics-card

我正在尝试设置 VGA Passthrough。目前正在 Ubuntu 16.04 下尝试此操作(但由于几乎不相关的挫折,我接近回滚到 vanilla Debian)。我大部分时间都在尝试遵循本指南,但我一直坚持理解 IOMMU 分组,因为显然我的机器不想分组。

我在内核命令行上设置了 intel_iommu=on,并且可以通过“cat /prod/cmdline”进行验证。但是,'find /sys/kernel/iommu_groups/ -type l' 什么也没找到,'ls /sys/kernel/iommu_groups' 显示一个空目录。尽管谷歌搜索,我没有找到太多关于如何从这里解决这个问题的指导,而且在此之前,还没有尝试过很多愚蠢的硬件技巧,所以对 PCI 总线进行故障排除对我来说是新的。

就硬件而言,这台机器在 Asus X99 E-WS 主板上有一个 Intel E5-1650 v3,一个 Nvidia Quadro K4000 和一个 GTX 970。我试图将 970 留给主机使用,而将 K4000 专用于 VM . 很高兴提供 lspci 或 virsh ondedev-list 输出,如果这会有所帮助,但最初并没有将它放在这里,因为它很长,而且我认为我什至还没有到有帮助的地步;据我所知,有关 iommu 被打开的事情在说谎

编辑:所以它被报告为:

$ dmesg | grep -e DMAR -e IOMMU
[    0.000000] DMAR: IOMMU enabled
[    0.000000] DMAR: IOMMU enabled
Run Code Online (Sandbox Code Playgroud)

我更迷茫了;如果它没有被启用,它可能是我的一些愚蠢的 grub 或内核模块错误。但我真的不清楚如何处理它,而不是按照其他资源所说的去做。

小智 5

我知道这已经晚了,但是根据您使用的 UEFI Bios,检查是否启用了 VT-d 可能会很棘手。对于我的 Asus X99A USB 3.1 主板,VT-x 和 VT-d 的设置在不同的位置。

对于 VT-d:高级 => 系统代理配置 => Intel VT for Directed I/O (VT-d)

在我的系统上,这被设置为禁用,即使启用了 VT-x(在高级 => CPU 配置 => 英特尔虚拟化技术下)。

确保两者都已启用


小智 2

我也遇到了同样的问题,我检查了BIOS设置,发现VT-d已被禁用。我启用了该选项并解决了问题。也许您可以查阅主板或芯片组手册,了解您的机器是否支持 intel vt-d。