LINUX.ORG.RU
решено ФорумAdmin

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

 , , , ,


1

3

Привет.
Пытаюсь сделать сабж. Вроде бы устройство проброшено, гостевая система его опознаёт, но говорит, что «Это устройство было остановлено, поскольку оно сообщило о возникновении неполадок. (Код 43)»
Хост – Debian 7, гость – Windows 7.

Видеокарта:

% lspci -nn | grep 81
81:00.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI RV610 [Radeon HD 2400 XT] [1002:94c1]
Конфигурация устройства ВМ:
<hostdev mode='subsystem' type='pci' managed='yes'>
 <source>
  <address domain='0x0000' bus='0x81' slot='0x00' function='0x0'/>
 </source>
 <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</hostdev>
Модули:
% cat /etc/modprobe.d/kvm-options.conf
blacklist nouveau
blacklist radeon
options kvm allow_unsafe_assigned_interrupts=1
Что я делаю не так?

До этого была невидия 610, давала тот же результат. Я решил, что это из-за наличия второй функции устройства (аудиокарты), но, видимо, проблема в другом.

gasinvein ★★★ ()

Еще бывает, что гость при перезагрузке(гостя) не возвращает карту назад в stub/pciback, попробуй перезагрузить хост и посмотреть на результаты первой загрузки гостя.

Deleted ()
Ответ на: комментарий от void_ptr
% dmesg | grep -iE "(IOMMU|VT-d)"
[    0.098508] dmar: IOMMU 0: reg_base_addr fbffe000 ver 1:0 cap d2078c106f0462 ecap f020ff
[    0.098520] dmar: IOMMU 1: reg_base_addr d7ffc000 ver 1:0 cap d2078c106f0462 ecap f020ff
[    0.098656] IOAPIC id 2 under DRHD base  0xfbffe000 IOMMU 0
[    0.098657] IOAPIC id 0 under DRHD base  0xd7ffc000 IOMMU 1
[    0.098659] IOAPIC id 1 under DRHD base  0xd7ffc000 IOMMU 1
[    4.502335] IOMMU 0 0xfbffe000: using Queued invalidation
[    4.502339] IOMMU 1 0xd7ffc000: using Queued invalidation
[    4.502357] IOMMU: Setting RMRR:
[    4.502389] IOMMU: Setting identity map for device 0000:00:1d.0 [0xbadbd000 - 0xbade1fff]
[    4.502427] IOMMU: Setting identity map for device 0000:00:1a.0 [0xbadbd000 - 0xbade1fff]
[    4.502439] IOMMU: Prepare 0-16MiB unity mapping for LPC
[    4.502467] IOMMU: Setting identity map for device 0000:00:1f.0 [0x0 - 0xffffff]
[    5.635522] AMD IOMMUv2 driver by Joerg Roedel <joerg.roedel@amd.com>
[    5.635524] AMD IOMMUv2 functionality not available on this system
gasinvein ★★★ ()
Ответ на: комментарий от MasterSplinter777

Эм, не знаю, я через через libvirt всё делал. Кусок xml-конфигурации с видеокартой в ОП-посте.
Команда запуска получается какая-то такая:

% virsh --connect qemu:///system domxml-to-native qemu-argv /etc/libvirt/qemu/Windows7.xml
LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin HOME=/ QEMU_AUDIO_DRV=none /usr/bin/kvm -name Windows7 -S -machine pc-1.1,accel=kvm,usb=off -m 2048 -realtime mlock=off -smp 4,sockets=1,cores=4,threads=1 -uuid 6b20bc2d-7c1c-1fc0-d3b6-df47d91a854f -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/Windows7.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=localtime -no-shutdown -boot strict=on -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/srv/vm/hdd/Windows7.qcow2,if=none,id=drive-virtio-disk0,format=qcow2 -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -drive file=/srv/vm/iso/virtio-win-0.1-74.iso,if=none,id=drive-ide0-1-0,readonly=on,format=raw -device ide-cd,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev tap,id=hostnet0,vhost=on,vhostfd=24 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:a2:31:9b,bus=pci.0,addr=0x7 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev pty,id=charserial1 -device isa-serial,chardev=charserial1,id=serial1 -device usb-tablet,id=input0 -vnc 127.0.0.1:0 -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,bus=pci.0,addr=0x2 -device AC97,id=sound0,bus=pci.0,addr=0x3 -device ,host=81:00.0,id=hostdev0,bus=pci.0,addr=0x6 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4

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

libvirt на данный момент поддерживает только pci-assign и piix чип, ручками можно написать скрипт для q35 чипа по примеру ссылки, указанной мной в предыдущем сообщении.

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

В первом случае скорее всего будут работать только GPU AMD начиная с HD4xxx

С чем связано ограничение ниже HD4xxx?

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

http://www.linux-kvm.org/page/USB

По ссылке - пример использования USB-подсистемы в Qemu на базе чипа Intel PIIX3, так же на этом чипе можно эмулировать ide-контроллер. Сейчас активно развивается поддержка Q35 (ICH9) в Qemu. (связано это с поддержкой шины pci-express в гостевых системах).

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

Вот так, судя по всему, запустилось:

LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin QEMU_AUDIO_DRV=none /usr/bin/kvm -name Windows7 -S -machine pc-1.1,accel=kvm,usb=off -m 2048 -realtime mlock=off -smp 4,sockets=1,cores=4,threads=1 -uuid 6b20bc2d-7c1c-1fc0-d3b6-df47d91a854f -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/Windows7.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=localtime -no-shutdown -boot strict=on -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/srv/vm/hdd/Windows7.qcow2,if=none,id=drive-virtio-disk0,format=qcow2 -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -drive file=/srv/vm/iso/virtio-win-0.1-74.iso,if=none,id=drive-ide0-1-0,readonly=on,format=raw -device ide-cd,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev pty,id=charserial1 -device isa-serial,chardev=charserial1,id=serial1 -device usb-tablet,id=input0 -vnc 0.0.0.0:0 -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,bus=pci.0,addr=0x2 -device AC97,id=sound0,bus=pci.0,addr=0x3 -device vfio-pci,host=81:00.0,id=hostdev0,bus=pci.0,addr=0x6 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4

-device vfio-pci,host=81:00.0,id=hostdev0,bus=pci.0,addr=0x6

При подключении по VNC чёрный экран (надеюсь, потому, что вывод идёт на проброшенную видеокарту).
Проверить сейчас не могу, т.к. нет физического доступа к хосту, но завтра попробую ещё раз.

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

Увы, не успех. Подключил монитор к видеокарте – там тоже сигнала нет.

gasinvein ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.