LINUX.ORG.RU

Проброс видео карты в KVM.

 ,


0

1

Имею при себе хост на debian 8 и proxmox 4.4 и виртуалку с windows 8.1, куда и планирую пробросить видеокарту.

Видеокарту geforce 210 и процессор xeon e5645 x2, а так же мать x8da6 supermicro

Пытаюсь пробросить видеокарту по https://pve.proxmox.com/wiki/Pci_passthrough

1. В /etc/default/grub изменил GRUB_CMDLINE_LINUX_DEFAULT=«quiet» на GRUB_CMDLINE_LINUX_DEFAULT=«quiet intel_iommu=on»

выполнил update-grub

После ребута проверил работоспособность dmesg | grep -e DMAR -e IOMMU

[ 0.000000] DMAR: IOMMU enabled

2. В /etc/modules добавил

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

3. IOMMU interrupt remapping

выполнение скрипта с результатом:

No interrupt remapping support found соответственно dmesg | grep ecap ничего не выдал

4. Verify IOMMU isolation

find /sys/kernel/iommu_groups/ -type l

Выдаёт пустоту.

1) move the card to another pci slot

Карту перемещать не стал.

2) add «pcie_acs_override=downstream» to grub options, which can help on some setup with bad ACS implementation.

Параметр добавил в GRUB_CMDLINE_LINUX_DEFAULT=

5. Конфиг виртуалки, который в итоге получился

lspci | grep -E «NVIDIA»

0a:00.0 VGA compatible controller: NVIDIA Corporation GT218 [GeForce 210] (rev a2)
0a:00.1 Audio device: NVIDIA Corporation High Definition Audio Controller (rev a1)

bootdisk: sata0
cores: 12
cpu: host,hidden=1
ide0: backups-1:iso/virtio-win-0.1.141.iso,media=cdrom,size=309208K
machine: q35
memory: 2048
name: testwin
net0: e1000=32:07:9D:A9:42:B2,bridge=vmbr2
numa: 1
ostype: win8
sata0: local:107/vm-107-disk-1.raw,size=32G
scsihw: virtio-scsi-pci
smbios1: uuid=8f5ff260-1787-4c06-9545-86fc801035be
sockets: 2
hostpci0: 0a:00,pcie=1,x-vga=on

6.

lspci -n -s 0a:00

0a:00.0 0300: 10de:0a65 (rev a2)
0a:00.1 0403: 10de:0be3 (rev a1)

echo «options vfio-pci ids=10de:0a65,10de:0be3» > /etc/modprobe.d/vfio.conf

echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf 
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf 
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf 

Результат запуска виртуальной машины:

using uefi without permanent efivars disk

TASK ERROR: Cannot open iommu_group: No such file or directory

Если добавить в конфиг виртуалки hostpci0: 0a:00,x-vga=on

driver=vfio, то виртуалка стартует. В диспетчере устройств отображается неопознанное устройство, но драйвера Nvidia на него не ставятся.

Что делать? Куда рыть?

★★

Последнее исправление: BitSum (всего исправлений: 2)

Ответ на: комментарий от Deleted

Спасибо, друг. В какой раз выручаешь :)

Попробую тогда GT740. Надеюсь, что получится пробросить.

BitSum ★★
() автор топика

GRUB_CMDLINE_LINUX_DEFAULT=«quiet intel_iommu=on iommu=pt»

Попробуй с такими параметрами. Для интела intel_iommu=on вроде бы недостаточно, нужен второй параметр.

anonymous
()
Ответ на: комментарий от anonymous

Для использования acs_override раньше нужно было накладывать патч на ядро. Хз как сейчас. Он был нужен, только если все видеокарточки попадали в одну iommu-группу. А в твоём случае, похоже, iommu не работает как надо. Добавляй iommu=pt и пробуй ещё раз. Потом ищи свою карточку в /sys/kernel/iommu_groups. Если в группе с видео-адаптером больше ничего нет, кроме hdmi, то acs_override не нужен.

Да, если пытаешь пробросить какое-нибудь pci-устройство из группы, где есть и другие девайсы, то их тоже надо забиндить или на vfio, или на pci-stub, хотя пробрасывать в вм не обязательно.

anonymous
()
Ответ на: комментарий от BitSum

В биосе включены vt-d и vt-x? Для проброса они необходимы. Возможно, что чипсет не поддерживает vt-x. Не повезло. Существует возможность, что сам чипсет пддерживает vt-x, но в биосе нет такой настройки. Тогда можно попробовать обновить биос. С последним я сталкивался на плате asrock, но это было очень давно.

anonymous
()
Ответ на: комментарий от anonymous

1. vt-d включил

2. из GRUB_CMDLINE_LINUX_DEFAULT= убрал pcie_acs_override=downstream

3. dmesg | grep ecap

[    0.090228] DMAR: dmar0: reg_base_addr fbffe000 ver 1:0 cap c90780106f0462 ecap f020fe

4. find /sys/kernel/iommu_groups/ -type l

/sys/kernel/iommu_groups/0/devices/0000:00:00.0
/sys/kernel/iommu_groups/1/devices/0000:00:01.0
/sys/kernel/iommu_groups/2/devices/0000:00:03.0
/sys/kernel/iommu_groups/3/devices/0000:00:07.0
/sys/kernel/iommu_groups/4/devices/0000:00:09.0
/sys/kernel/iommu_groups/5/devices/0000:00:0a.0
/sys/kernel/iommu_groups/6/devices/0000:00:0d.0
/sys/kernel/iommu_groups/6/devices/0000:00:0d.1
/sys/kernel/iommu_groups/6/devices/0000:00:0d.2
/sys/kernel/iommu_groups/6/devices/0000:00:0d.3
/sys/kernel/iommu_groups/6/devices/0000:00:0d.4
/sys/kernel/iommu_groups/6/devices/0000:00:0d.5
/sys/kernel/iommu_groups/6/devices/0000:00:0d.6
/sys/kernel/iommu_groups/7/devices/0000:00:0e.0
/sys/kernel/iommu_groups/7/devices/0000:00:0e.1
/sys/kernel/iommu_groups/7/devices/0000:00:0e.2
/sys/kernel/iommu_groups/7/devices/0000:00:0e.4
/sys/kernel/iommu_groups/8/devices/0000:00:13.0
/sys/kernel/iommu_groups/9/devices/0000:00:14.0
/sys/kernel/iommu_groups/9/devices/0000:00:14.1
/sys/kernel/iommu_groups/9/devices/0000:00:14.2
/sys/kernel/iommu_groups/9/devices/0000:00:14.3
/sys/kernel/iommu_groups/10/devices/0000:00:16.0
/sys/kernel/iommu_groups/10/devices/0000:00:16.1
/sys/kernel/iommu_groups/10/devices/0000:00:16.2
/sys/kernel/iommu_groups/10/devices/0000:00:16.3
/sys/kernel/iommu_groups/10/devices/0000:00:16.4
/sys/kernel/iommu_groups/10/devices/0000:00:16.5
/sys/kernel/iommu_groups/10/devices/0000:00:16.6
/sys/kernel/iommu_groups/10/devices/0000:00:16.7
/sys/kernel/iommu_groups/11/devices/0000:00:1a.0
/sys/kernel/iommu_groups/11/devices/0000:00:1a.1
/sys/kernel/iommu_groups/11/devices/0000:00:1a.2
/sys/kernel/iommu_groups/11/devices/0000:00:1a.7
/sys/kernel/iommu_groups/12/devices/0000:00:1b.0
/sys/kernel/iommu_groups/13/devices/0000:00:1c.0
/sys/kernel/iommu_groups/13/devices/0000:00:1c.4
/sys/kernel/iommu_groups/13/devices/0000:00:1c.5
/sys/kernel/iommu_groups/13/devices/0000:03:00.0
/sys/kernel/iommu_groups/13/devices/0000:04:00.0
/sys/kernel/iommu_groups/14/devices/0000:00:1d.0
/sys/kernel/iommu_groups/14/devices/0000:00:1d.1
/sys/kernel/iommu_groups/14/devices/0000:00:1d.2
/sys/kernel/iommu_groups/14/devices/0000:00:1d.7
/sys/kernel/iommu_groups/15/devices/0000:00:1e.0
/sys/kernel/iommu_groups/15/devices/0000:01:02.0
/sys/kernel/iommu_groups/16/devices/0000:00:1f.0
/sys/kernel/iommu_groups/16/devices/0000:00:1f.2
/sys/kernel/iommu_groups/16/devices/0000:00:1f.3
/sys/kernel/iommu_groups/16/devices/0000:00:1f.5
/sys/kernel/iommu_groups/17/devices/0000:0a:00.0
/sys/kernel/iommu_groups/17/devices/0000:0a:00.1
/sys/kernel/iommu_groups/18/devices/0000:07:00.0
/sys/kernel/iommu_groups/18/devices/0000:07:00.1
/sys/kernel/iommu_groups/18/devices/0000:07:00.2
/sys/kernel/iommu_groups/18/devices/0000:07:00.3
/sys/kernel/iommu_groups/19/devices/0000:fe:00.0
/sys/kernel/iommu_groups/19/devices/0000:fe:00.1
/sys/kernel/iommu_groups/20/devices/0000:fe:02.0
/sys/kernel/iommu_groups/20/devices/0000:fe:02.1
/sys/kernel/iommu_groups/20/devices/0000:fe:02.2
/sys/kernel/iommu_groups/20/devices/0000:fe:02.3
/sys/kernel/iommu_groups/20/devices/0000:fe:02.4
/sys/kernel/iommu_groups/20/devices/0000:fe:02.5
/sys/kernel/iommu_groups/21/devices/0000:fe:03.0
/sys/kernel/iommu_groups/21/devices/0000:fe:03.1
/sys/kernel/iommu_groups/21/devices/0000:fe:03.2
/sys/kernel/iommu_groups/21/devices/0000:fe:03.4
/sys/kernel/iommu_groups/22/devices/0000:fe:04.0
/sys/kernel/iommu_groups/22/devices/0000:fe:04.1
/sys/kernel/iommu_groups/22/devices/0000:fe:04.2
/sys/kernel/iommu_groups/22/devices/0000:fe:04.3
/sys/kernel/iommu_groups/23/devices/0000:fe:05.0
/sys/kernel/iommu_groups/23/devices/0000:fe:05.1
/sys/kernel/iommu_groups/23/devices/0000:fe:05.2
/sys/kernel/iommu_groups/23/devices/0000:fe:05.3
/sys/kernel/iommu_groups/24/devices/0000:fe:06.0
/sys/kernel/iommu_groups/24/devices/0000:fe:06.1
/sys/kernel/iommu_groups/24/devices/0000:fe:06.2
/sys/kernel/iommu_groups/24/devices/0000:fe:06.3
/sys/kernel/iommu_groups/25/devices/0000:ff:00.0
/sys/kernel/iommu_groups/25/devices/0000:ff:00.1
/sys/kernel/iommu_groups/26/devices/0000:ff:02.0
/sys/kernel/iommu_groups/26/devices/0000:ff:02.1
/sys/kernel/iommu_groups/26/devices/0000:ff:02.2
/sys/kernel/iommu_groups/26/devices/0000:ff:02.3
/sys/kernel/iommu_groups/26/devices/0000:ff:02.4
/sys/kernel/iommu_groups/26/devices/0000:ff:02.5
/sys/kernel/iommu_groups/27/devices/0000:ff:03.0
/sys/kernel/iommu_groups/27/devices/0000:ff:03.1
/sys/kernel/iommu_groups/27/devices/0000:ff:03.2
/sys/kernel/iommu_groups/27/devices/0000:ff:03.4
/sys/kernel/iommu_groups/28/devices/0000:ff:04.0
/sys/kernel/iommu_groups/28/devices/0000:ff:04.1
/sys/kernel/iommu_groups/28/devices/0000:ff:04.2
/sys/kernel/iommu_groups/28/devices/0000:ff:04.3
/sys/kernel/iommu_groups/29/devices/0000:ff:05.0
/sys/kernel/iommu_groups/29/devices/0000:ff:05.1
/sys/kernel/iommu_groups/29/devices/0000:ff:05.2
/sys/kernel/iommu_groups/29/devices/0000:ff:05.3
/sys/kernel/iommu_groups/30/devices/0000:ff:06.0
/sys/kernel/iommu_groups/30/devices/0000:ff:06.1
/sys/kernel/iommu_groups/30/devices/0000:ff:06.2
/sys/kernel/iommu_groups/30/devices/0000:ff:06.3

При запуске виртуалки:

using uefi without permanent efivars disk
kvm: -device vfio-pci,host=0a:00.0,id=hostpci0.0,bus=ich9-pcie-port-1,addr=0x0.0,multifunction=on: vfio error: 0000:0a:00.0: failed to setup container for group 17: failed to set iommu for container: Operation not permitted
TASK ERROR: start failed: command '/usr/bin/kvm -id 107 -chardev 'socket,id=qmp,path=/var/run/qemu-server/107.qmp,server,nowait' -mon 'chardev=qmp,mode=control' -pidfile /var/run/qemu-server/107.pid -daemonize -smbios 'type=1,uuid=8f5ff260-1787-4c06-9545-86fc801035be' -drive 'if=pflash,unit=0,format=raw,readonly,file=/usr/share/kvm/OVMF_CODE-pure-efi.fd' -drive 'if=pflash,unit=1,format=raw,file=/tmp/107-ovmf.fd' -name testwin -smp '24,sockets=2,cores=12,maxcpus=24' -nodefaults -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' -vga none -nographic -no-hpet -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_id=proxmox,hv_spinlocks=0x1fff,hv_vapic,hv_time,hv_reset,hv_vpindex,hv_runtime,hv_relaxed,kvm=off' -m 2048 -object 'memory-backend-ram,id=ram-node0,size=1024M' -numa 'node,nodeid=0,cpus=0-11,memdev=ram-node0' -object 'memory-backend-ram,id=ram-node1,size=1024M' -numa 'node,nodeid=1,cpus=12-23,memdev=ram-node1' -k en-us -readconfig /usr/share/qemu-server/pve-q35.cfg -device 'usb-tablet,id=tablet,bus=ehci.0,port=1' -device 'vfio-pci,host=0a:00.0,id=hostpci0.0,bus=ich9-pcie-port-1,addr=0x0.0,multifunction=on' -device 'vfio-pci,host=0a:00.1,id=hostpci0.1,bus=ich9-pcie-port-1,addr=0x0.1' -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' -iscsi 'initiator-name=iqn.1993-08.org.debian:01:dea98f6b7d0' -drive 'file=/mnt/pve/backups-1/template/iso/virtio-win-0.1.141.iso,if=none,id=drive-ide0,media=cdrom,aio=threads' -device 'ide-cd,bus=ide.0,unit=0,drive=drive-ide0,id=ide0,bootindex=200' -device 'ahci,id=ahci0,multifunction=on,bus=pci.0,addr=0x7' -drive 'file=/var/lib/vz/images/107/vm-107-disk-1.raw,if=none,id=drive-sata0,format=raw,cache=none,aio=native,detect-zeroes=on' -device 'ide-drive,bus=ahci0.0,drive=drive-sata0,id=sata0,bootindex=100' -netdev 'type=tap,id=net0,ifname=tap107i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown' -device 'e1000,mac=32:07:9D:A9:42:B2,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300' -rtc 'driftfix=slew,base=localtime' -machine 'type=q35' -global 'kvm-pit.lost_tick_policy=discard'' failed: exit code 1

BitSum ★★
() автор топика
Ответ на: комментарий от BitSum

Проблема с правами доступа. Не знаю, где они настраиваются в твоём случае.

Я использую libvirt, а в качестве гуя для него - virt-manager. Настройки расположены в /etc/libvirt/qemu.conf. В данном случае надо было бы в cgroup_device_acl прописать /dev/vfio/vfio и, возможно, /dev/vfio/17. Хотя в моём случае указывать iommu-группу с видео было не надо. Если proxmox работает поверх libvirt, то ковыряй настройки в этом файле.

При обновлении jessie до stretch (когда он ещё был тестингом) у меня сломался проброс для виртуалок на чипсете q35: чёрный экран и 100 % загрузки процессора. Если столкнёшься с этим, попробуй поменять чипсет на i440fx.

anonymous
()

Прикупил RX560ую. Вроде работает. Но ещё одну виртуалку с проброшенной видюхой запустить не удаётся: Device or resource busy

BitSum ★★
() автор топика
Последнее исправление: BitSum (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.