我有一个问题,通过我的系统的显卡nvidia与kvm-qemu虚拟机。
我的系统:
i7-6700k z170 chipset based motherboard nvidia 970 gtx
根据wikipedia页面,这完全由iommu支持。
我的操作系统是Ubuntu 16.04.3服务器版。 一切都是最新的,作为一个kvm-qemu经理我正在使用泡菜版本 。
我按照这个教程 。 我没有用acs补丁修补内核,因为我正在使用4.10内核,但也许我应该?
无论如何,我有这个结果:
IOMMU似乎是用gub命令激活的
10月24日22:45:03 47kdocker内核:[0.000000] DMAR:启用IOMMU
似乎有2 dmar激活,我不知道是否正常。 一个与英特尔集成显卡。 另一个与其他一切。
@ 47kdocker:/ sys / devices / virtual / iommu / dmar1 / devices $ ls
0000:00:00.0 0000:00:14.2 0000:00:1b.0 0000:00:1c.0 0000:00:1d.0 0000:00:1f.3 0000:01:00.1
0000:00:01.0 0000:00:16.0 0000:00:1b.2 0000:00:1c.2 0000:00:1f.0 0000:00:1f.4 0000:06:00.0
0000:00:14.0 0000:00:17.0 0000:00:1b.3 0000:00:1c.3 0000:00:1f.2 0000:01:00.0 0000:07:00.0
@ 47kdocker:/ sys / devices / virtual / iommu / dmar1 / devices $ ls ../../dmar0
设备intel-iommu电源子系统uevent
@ 47kdocker:/ sys / devices / virtual / iommu / dmar1 / devices $ ls ../../dmar0/devices
0000:00:02.0
IOMMU组1中装有3个设备:gpu,来自gpu的audio控制器和pci-express集线器。 这是问题吗?
find / sys / kernel / iommu_groups / -type l /sys/kernel/iommu_groups/1/devices/0000:01:00.1
/sys/kernel/iommu_groups/1/devices/0000:00:01.0
/sys/kernel/iommu_groups/1/devices/0000:01:00.0
00:01.0 PCI桥:Intel Corporation Sky Lake PCIe控制器(x16)[8086:1901](rev 07)
但显然我已经加载了好的模块的显卡,所以通常应该准备好发送给虚拟机了。
01:00.0 VGA兼容控制器:NVIDIA Corporation GM204 [GeForce GTX 970](rev a1)
子系统:eVga.com。 Corp. GM204 [GeForce GTX 970]
正在使用的内核驱动程序:vfio-pci
内核模块:nvidiafb,nouveau
01:00.1audio设备:NVIDIA Corporation GM204高保真audio控制器(rev a1)│子系统:eVga.com Corp. GM204高保真audio控制器
正在使用的内核驱动程序:vfio-pci
内核模块:snd_hda_intel
根据泡菜的创造者 ,该设备应该被检测,但只有audio控制器被检测到。
我试图从那里添加到我的xml虚拟机进行所需的修改:
qemu:commandline> qemu:env name =“QEMU_PA_SAMPLES”value =“4096”/> qemu:env name =“QEMU_AUDIO_DRV”value =“pa”/> qemu:arg value =“ – device”/> qemu:arg value = “ioh3420,bus = pcie.0,addr = 1c.0,multifunction = on,port = 1,chassis = 1,id = root.1”/> qemu:arg value =“ – device”/> qemu:参数值=“vfio-pci,host = [GPU],bus = root.1,addr = 00.0,multifunction = on,x-vga = on”/> qemu:arg value =“ – device”/> qemu:arg value = “vfio-pci,host = [Audio],bus = root.1,addr = 00.1”/> qemu:arg value =“ – cpu”/> qemu:arg value =“host”/> / qemu:commandline>
我真的不知道下一步要检查什么…我不想在这个服务器上安装graphics界面。 那么我需要从那里添加igfx选项吗? 我真的没有想法。是因为IOMMU小组吗? 那是因为ACS补丁吗? 看来,如果卡被正确检测为可用,kimchi接口和libvirtd将被检测为…但是因为它不在列表中,所以问题可能比libvirtd更上游?
谢谢您的帮助。