Почему подключение графического процессора приводит к зависанию QEMU в Ubuntu

Я использую Ubuntu на рабочей станции с 2 процессорами GTX 1070 и I5 7400, у меня установлен QEMU и у меня есть старая Windows 10 vm. Я попытался связать графический процессор, добавив аппаратное обеспечение связи PCI в графический интерфейс virt-manager и восстановил окна. vm (из сохраненного состояния) он обнаруживает оборудование PCI, но не устанавливает никаких драйверов, я полностью включил виртуальную машину, затем попытался запустить ее снова, но я получил эту ошибку

  File "/usr/share/virt-manager/virtManager/object/libvirtobject.py", line 57, in newfn
    ret = fn(self, *args, **kwargs)
  File "/usr/share/virt-manager/virtManager/object/domain.py", line 1384, in startup
    self._backend.create()
  File "/usr/lib/python3/dist-packages/libvirt.py", line 1353, in create
    raise libvirtError('virDomainCreate() failed')
libvirt.libvirtError: unsupported configuration: host doesn't support passthrough of host PCI devices

поэтому я проверяю, включен ли VT, и это так, поскольку
sudo rdmsr 0x3A возвращает 5

Следующим шагом, который я сделал, было проверить kvm-ok и я получил

 INFO: /dev/kvm exists
 KVM acceleration can be used

пока все нормально, поэтому я использовал

virt-host-validate и понял IOMMU не включен, поэтому я сделал следующее, отредактировал
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" к GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on" с последующим update-grub

в настоящее время IOMMU включен, так как virt-host-validate выходы

  QEMU: Checking if IOMMU is enabled by kernel                               : PASS

теперь, когда я пытаюсь запустить ту же виртуальную машину без ссылки pci, она работает нормально, но добавление ссылки pci вызывает libvirtd тайм-аут и зависание

авг 28 00:45:22 WORKSTATION systemd[1]: libvirtd.service: Unit process 1814 (dnsmasq) remains running after unit stopped.
авг 28 00:45:22 WORKSTATION systemd[1]: libvirtd.service: Unit process 1815 (dnsmasq) remains running after unit stopped.
авг 28 00:45:22 WORKSTATION systemd[1]: libvirtd.service: Unit process 4018 (libvirtd) remains running after unit stopped.
авг 28 00:45:22 WORKSTATION systemd[1]: Failed to start Virtualization daemon.

Выход пф dmesg

[32729.791574] [drm:nv_drm_master_set [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000500] Failed to grab modeset ownership
[32729.792216] [drm:nv_drm_master_set [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000900] Failed to grab modeset ownership

Я что-то упустил, нужно ли мне включить какие-то дополнительные функции или, может быть, отключить какие-то?

виртуальный менеджер ubuntu qemu

Печенье с сорняками

1 ответ
1

От dmesg вывод видно, что ядро ​​линукса загружает драйвера для обеих карт.

Для того, чтобы освободить устройство для вашей ВМ, нужно отвязать от него драйвер. https://www.iram.fr/~blanchet/ethercat/unbind_manually_pci_device.html рассказывает, как отвязать драйвер от устройства.

Во-первых, найдите слоты PCI и актуальные драйверы:

lspci -Dk

Вывод может выглядеть так:

0000:01:06.0 Ethernet controller: Intel Corporation 8255xER/82551IT Fast

Контроллер Ethernet (версия 10) Используемый драйвер ядра: e100 0000:01:07.0 Контроллер Ethernet: Intel Corporation 8255xER/82551IT Fast Ethernet Controller (версия 10) Используемый драйвер ядра: e100

Вам нужно найти там записи NVidia. Возможно, вам придется угадать, какое устройство вы используете.

Вам необходимо записать идентификатор PCI (0000:01:07.0) и имя драйвера (e100) для вашего графического процессора.

Затем вы можете оформить

echo -n "<pci id>" > /sys/bus/pci/drivers/<driver>/unbind

Вам нужно заменить <pci_id> а также <driver> со значениями, которые вы получили от lspci выход. Это отсоединит драйвер NVidia от указанного устройства, освободив его для прохода через PCI.

Земля Килканен

Добавить комментарий

Ваш адрес email не будет опубликован.