我相信我们在 GTX 1080(驱动程序)和 PCI 直通方面遇到了可能的错误。
我的主机是Ubuntu 14.04系统。我的客人是 Ubuntu 14.04/16.04 系统(两者都做同样的事情)。
我可以在来宾虚拟机内看到设备:
$ lspci -vnn | grep VGA
00:05.0 VGA compatible controller: NVIDIA Corporation Device 1b80 (rev a1)
我能够成功安装驱动程序(370.2,最新驱动程序)。它已安装,但未被识别nvidia-smi
:
$ nvidia-smi
Unable to determine the device handle for GPU 0000:00:05.0: Unknown Error
查看时dmesg
我看到以下错误消息
[29.535583] nvidia 0000:00:05.0: irq 45 for MSI/MSI-X
[29.577727] NVRM: RmInitAdapter failed! (0x23:0x56:458)
[29.577807] NVRM: rm_init_adapter failed for device bearing minor number 0
我可以将 GTX 1080 换成不同的卡(M4000,进行直通并在客户机上安装驱动程序)并且它可以工作。明天我将尝试使用另一张 Geforce 卡。
NVidia 论坛上的另一个人和我有同样的问题(但没有答案)。
有没有办法进一步调试这个?
答案1
我遇到了同样的问题,我在以下位置找到了答案https://www.evonide.com/non-root-gpu-passthrough-setup/。您需要添加-cpu host,kvm=off
到 qemu 命令行。我正在使用 ganeti,因此以下解决了问题:
gnt-instance modify -H cpu_type="host\,kvm=off"
如果我理解正确的话,这个标志不会关闭来宾的 KVM 加速,而是通过-machine pc,accel=kvm
.但它会关闭来宾的嵌套 KVM 加速(因此您将无法在来宾中运行 KVM 虚拟机)。
答案2
我不知道我是否能做出很多贡献,在我看来,nvidia 正在积极破坏 pci 直通尝试(您应该购买 Quadro 卡)。
x-pci-vendor-id=0x10DE,x-pci-device-id=0x11BA,x-pci-sub-vendor-id=0x10DE,x-pci-sub-device-id=0x0965
尝试通过添加参数来伪造 pci 设备 ID -device vfio-pci,
。这将使其假装成 Quadro K5000。
答案3
我为此奋斗了一段时间,如果 gpu 是你系统中唯一的一个,你需要安装 grub 和 linux 来让它独立。我用串行控制台启动我的机器,但关键部分是 video=efifb:off
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200" GRUB_TERMINAL="控制台串行" GRUB_SERIAL_COMMAND="串行 --speed=115200 --unit=0 --word=8 --parity=no --stop=1" GRUB_CMDLINE_LINUX= “安静的启动视频 = eifb:关闭 intel_iommu = 上控制台 = ttyS0,115200”
https://unix.stackexchange.com/questions/328534/driver-for-gtx-1080-doesnt-work-on-guest-when-using-kvm-pci-passthrough