LINUX.ORG.RU
ФорумAdmin

KVM iommu_group

 , , , ,


3

3

Здравствуйте,

не получается прокинуть видиокарту через KVM

в загрузчик добавил опции:

i915.enable_hd_vgaarb=1 intel_iommu=on vfio_iommu_type1.allow_unsafe_interrupts=1 pcie_acs_override=downstream

выполняю:

qemu-system-x86_64 -enable-kvm -M q35 -m 1024 -cpu host \
-smp 6,sockets=1,cores=6,threads=1 \
-bios /usr/share/qemu/bios.bin -vga none \
-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \
-device vfio-pci,host=02:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on \
-device vfio-pci,host=02:00.1,bus=root.1,addr=00.1

и выдаёт ошибку:

qemu-system-x86_64: -device vfio-pci,host=02:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: vfio: error, group 1 is not viable, please ensure all devices within the iommu_group are bound to their vfio bus driver.

как я понял это изза того что в группе 1 состоят несколько устройств и чтоб всё работало нужно их все прокинуть

чтоб это обойти есть опция pcie_acs_override=downstream

которая не помогает..


Какая видеокарта на host, а какая пробрасывается в guest?

Что говорит dmesg про VT-d и IOMMU?

-M q35

Проброс стабильнее работает на:

-machine pc-i440fx-2.0,accel=kvm

-bios /usr/share/qemu/bios.bin

Если видеокарта с UEFI, то всяко лучше использовать pure-UEFI OVMF имадж, а не legacy-VGA seabios, самый свежий можно взять здесь. Загружать его так:

-drive if=pflash,format=raw,readonly,file=OVMF_CODE.fd \
-drive if=pflash,format=raw,file=OVMF_VARS.fd

vfio-pci

Пробовал обычный pci-assign?

xinu
()
Ответ на: комментарий от xinu
# dmesg | grep -e DMAR -e IOMMU
[    0.000000] ACPI: DMAR 0x00000000BD958748 000080 (v01 INTEL  HSW      00000001 INTL 00000001)
[    0.000000] Intel-IOMMU: enabled
[    0.015990] dmar: IOMMU 0: reg_base_addr fed90000 ver 1:0 cap d2008c20660462 ecap f010da
[    0.016054] IOAPIC id 8 under DRHD base  0xfed90000 IOMMU 0
[    0.375382] DMAR: No ATSR found
[    0.375396] IOMMU 0 0xfed90000: using Queued invalidation
[    0.375398] IOMMU: Setting RMRR:
[    0.375405] IOMMU: Setting identity map for device 0000:00:14.0 [0xbd8c7000 - 0xbd8d3fff]
[    0.375426] IOMMU: Setting identity map for device 0000:00:1a.0 [0xbd8c7000 - 0xbd8d3fff]
[    0.375441] IOMMU: Setting identity map for device 0000:00:1d.0 [0xbd8c7000 - 0xbd8d3fff]
[    0.375452] IOMMU: Prepare 0-16MiB unity mapping for LPC
[    0.375457] IOMMU: Setting identity map for device 0000:00:1f.0 [0x0 - 0xffffff]

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

на хосте GT 630 (nouveau) на госте Radeon HD 7870

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

ну вот с pci-assign заработало !!!

блин когда гугли гдето упоминалось о pci-assign .. знал бы лушче англисский..

Спасибо!!!

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

Камрады, кто подскажет приличный гайд по пробросам кроме темы на арчефоруме и http://thehomeserverblog.com/esxi-lab-specs/ ? Кто-нибудь возможно заморачивался структурированием разрозненной информации по этой теме?

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

pci-assign заработало

у меня тоже 7870 (GV-R787OC-2GD ) для гостя (win8.1), и тоже работает только с pci-assign, попыток завести через vfio на всех осях, со всеми чипсетами, биосами и прочими настройками к успеху не привели.

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

как можно вернуть видеокарту хосту

При использовании vfio - оно само резетит карту и возвращает при выключении виртуалки, а вот при pci-assign гемор, нужно в госте её доставать/отключать, вот Novel-ch, например, использует скрипты.

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

При использовании vfio - оно само резетит карту и возвращает при выключении виртуалки

Я через vfio запускаю. Пробрасываю в гостя radeon 7870, таким макаром:

Radeon в blacklist не добавляю, до загрузки X-ов выполняю скрипт


#!/bin/bash
modprobe vfio-pci
for dev in «$@»; do
vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
device=$(cat /sys/bus/pci/devices/$dev/device)
if [ -e /sys/bus/pci/devices/$dev/driver ]; then
echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
fi
echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id
done


В качестве параметра передаю скрипту адрес видео.

В итоге, после загрузки X, хост radeon не видит, гость карту видит, нормально выключется и перезагружается без каких-либо глюков.
Вот я и не догоняю, как вернуть карту хосту?

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