LINUX.ORG.RU

linux mint 18.2 проброс видеокарты nvidia gtx750 в qemu

 , ,


1

1

Всем привет, как все таки пробросить видеокарту в qemu. Все инструкции перепробовал нифига не получается проц intel core 7 в биосе включено.

dmesg | grep -e DMAR -e IOMMU ничего не пишет вообще пусто

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

сегодня нашел другой поставил вроде поддерживает

core i5-3330

dmesg | grep -iE "(IOMMU|VT-d)" [ 0.027550] DMAR-IR: IOAPIC id 2 under DRHD base 0xfed91000 IOMMU 1

вот чтоно показывает

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

Это заметный даунгрейд, если что.

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

Мои заметки (правда для AMD):

ВНИМАНИЕ!
* root шину не пробрасывать — "vfio: Cannot reset device , no available reset mechanism"


dmesg | grep AMD-Vi
	* AMD-Vi: Enabling IOMMU at 0000:00:00.2 cap 0x40
	* AMD-Vi: Lazy IO/TLB flushing enabled
	* AMD-Vi: Initialized for Passthrough Mode

Опции kernel — НИЧЕГО ВРОДЕ НЕ НУЖНО, но если что, пробовать это:
	* iommu=pt iommu=1 amd_iommu=fullflush
	* vfio_iommu_type1.allow_unsafe_interrupts=1


IOMMU
	* dmesg | grep iommu | grep group


Скрипт:
#!/bin/sh

echo '0000:05:00.0' | tee '/sys/bus/pci/devices/0000:05:00.0/driver/unbind'
echo '0000:05:00.1' | tee '/sys/bus/pci/devices/0000:05:00.1/driver/unbind'

echo '1002 679a' | tee /sys/bus/pci/drivers/vfio-pci/new_id
echo '1002 aaa0' | tee /sys/bus/pci/drivers/vfio-pci/new_id

ls -hal /dev/vfio


qemu-system-x86_64 
	-device vfio-pci,host=00:14.2,addr=12.0



Видеокарта:
-----------

Проблемы (ati-drivers: 15.9-r1, kernel: 4.3.3):

(dmesg) vfio-pci 0000:05:00.1: Refused to change power state, currently in D3
	* ATI Sapphire 11196-19-20G HD 7950
	* ATI Gigabyte GV-R787OC-2GD HD 7870
	* ATI Gigabyte GV-R785OC-1GD HD 7850
	* ATI (какая-то древняя)

Работает:
	* NVidia EVGA GTX 480
	* GIGABYTE GV-N960G1 GAMING-2GD, GTX 960

С ядра 4.1, pci-stub не нужен, можно напрямую добавлять в vfio-pci

vfio-cpi
--------

1. /etc/modprobe.d/qemu.conf

# Reserve hardware with vfio_pci for guest

install nvidia        /sbin/modprobe vfio_pci; /sbin/modprobe --ignore-install nvidia
install snd_hda_intel /sbin/modprobe vfio_pci; /sbin/modprobe --ignore-install snd_hda_intel
install vfio_pci      /etc/modprobe.d/sh/qemu.sh

2. /etc/modprobe.d/sh/qemu.sh

#!/bin/sh

sleep 10

# reserve videocard and soundcard for guest
echo 'vfio-pci' > '/sys/bus/pci/devices/0000:05:00.0/driver_override'
echo 'vfio-pci' > '/sys/bus/pci/devices/0000:05:00.1/driver_override'

# reserve usb for guest
echo '0000:02:00.0' > '/sys/bus/pci/devices/0000:02:00.0/driver/unbind'
echo 'vfio-pci'     > '/sys/bus/pci/devices/0000:02:00.0/driver_override'

echo '0000:06:00.0' > '/sys/bus/pci/devices/0000:06:00.0/driver/unbind'
echo 'vfio-pci'     > '/sys/bus/pci/devices/0000:06:00.0/driver_override'

# modprobe vfio-pci should be before all other modprobe
/sbin/modprobe --ignore-install vfio_pci


3. /etc/udev/rules.d/99-qemu.rules
GROUP="kvm", MODE="0660", ACTION=="add", DEVPATH=="/devices/virtual/misc/vhost-net"
GROUP="kvm", MODE="0660", ACTION=="add", DEVPATH=="/devices/virtual/vfio/20"

4. /etc/rc.conf   (ulimits -a)
rc_ulimit="-l unlimited"

qemu-system-x86_64 -vga none -nographics


pci-assign
----------

С ядра 4.2 не работает.

dmesg:
[ 1097.172000] pci 0000:05:00.0: kvm assign device failed ret -22

This happens when kvm calls iommu_attach_device(), which was changed in
v4.2 to fail with -EINVAL (-22) when the device is part of a
non-singleton iommu group. Legacy kvm device assignment is not iommu
group aware and has been deprecated for some time.
soomrack ★★★★★
()
Последнее исправление: soomrack (всего исправлений: 1)
Ответ на: комментарий от gostero

А у меня встает по другим причинам, с пробросом не связанным.

Никак нельзя что-нибудь полезное написать? Так тебе никто не поможет.

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

соорри )))

вообщем

/etc/default/grub

прописал intel_iommu=on

команда dmesg | grep -iE "(IOMMU|VT-d)" выдает

0.000000] DMAR: IOMMU enabled [ 0.026693] DMAR-IR: IOAPIC id 2 under DRHD base 0xfed90000 IOMMU 0 [ 0.666020] iommu: Adding device 0000:00:00.0 to group 0 [ 0.666033] iommu: Adding device 0000:00:01.0 to group 1 [ 0.666042] iommu: Adding device 0000:00:14.0 to group 2 [ 0.666053] iommu: Adding device 0000:00:16.0 to group 3 [ 0.666061] iommu: Adding device 0000:00:1a.0 to group 4 [ 0.666069] iommu: Adding device 0000:00:1b.0 to group 5 [ 0.666078] iommu: Adding device 0000:00:1c.0 to group 6 [ 0.666086] iommu: Adding device 0000:00:1c.4 to group 7 [ 0.666097] iommu: Adding device 0000:00:1c.5 to group 8 [ 0.666106] iommu: Adding device 0000:00:1d.0 to group 9 [ 0.666121] iommu: Adding device 0000:00:1f.0 to group 10 [ 0.666129] iommu: Adding device 0000:00:1f.2 to group 10 [ 0.666137] iommu: Adding device 0000:00:1f.3 to group 10 [ 0.666145] iommu: Adding device 0000:00:1f.5 to group 10 [ 0.666151] iommu: Adding device 0000:01:00.0 to group 1 [ 0.666157] iommu: Adding device 0000:01:00.1 to group 1 [ 0.666166] iommu: Adding device 0000:03:00.0 to group 11 [ 0.666173] iommu: Adding device 0000:04:00.0 to group 8

запускаю виртуалку как через virt-manager так и скриптом и завис

скрипт такой

qemu-system-x86_64 -enable-kvm -m 4096 -cpu host,kvm=off \ -smp 4,sockets=1,cores=4,threads=1 \ -hda win7.img -device vfio-pci,host=01:00.0,x-vga=on -device vfio-pci,host=01:00.1 \ -vga none

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

видяхи две одни встроенная в мать, вторая nvdidia gtx 750

проброс делаю gtx 750

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

А можно, например, вывод sudo systemctl -f, а точнее то, что успеет вывестить от запуска qemuдо зависания?

И еще вывод ls -lh /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/driver.

А то у меня все довольно похоже (3770, 750 Ti), все работает.

Начало моей команды qemu: qemu-system-x86_64 -nodefaults -nodefconfig -machine type=q35,accel=kvm -enable-kvm -cpu host,-hypervisor,kvm=off,hv_time,hv_relaxed,hv_vapic,hv_spinlocks=0x1fff,hv_vendor_id=1234567890ab

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от t184256

fox@fox-pc ~ $ ls -lh /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/driver lrwxrwxrwx 1 root root 0 ноя 8 23:58 /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/driver -> ../../../../bus/pci/drivers/nvidia fox@fox-pc ~ $

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

$ ls -lh /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/driver lrwxrwxrwx 1 root root 0 ноя 8 23:58 /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/driver -> ../../../../bus/pci/drivers/nvidia

Ну и что ты хотел?? По какому такому гайду настраивал, если у тебя ее исползует драйвер nvidia гостевого linux? Сноси/блэклисть драйвер, и че хочешь делай, а чтобы на конце в итоге был vfio-pci или хотя бы pci-stub.

Пример соответствующего куска гайда от гуру (папы?) VFIO: https://vfio.blogspot.ru/2015/05/vfio-gpu-how-to-series-part-3-host.html

Застрянешь --- задавай конкретные вопросы.

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от gostero

В идеале отсюда, но особо нетерпеливым можно перейти сразу к options vfio-pci ........... при условии, что не будут жаловаться, что что-то непонятно. Тебе вроде как осталось загрузить целый один модуль vfio-pci с нужными параметрами и не загрузить модуль nvidia. Все еще недостаточно подробно?

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

1. GRUB_CMDLINE_LINUX_DEFAULT=«intel_iommu=on» 2. Добавь в блэклист модули nvidia и nouveau. 3. Установи virt-manager, создай ВМ, прокинь свою карту (всё через virt-manager). Городить скрипты запуска мимо libvirt сейчас нет никакого смысла, virt-manager прекрасно делает vfio-bind(unbind) сам.

King_Carlo ★★★★★
()
Последнее исправление: King_Carlo (всего исправлений: 1)
Ответ на: комментарий от King_Carlo

теперь не могу понять что случилось.

показывает вот так dmesg | grep -e DMAR -e IOMMU

[ 0.000000] ACPI: DMAR 0x00000000BC974C60 0000B8 (v01 INTEL SNB 00000001 INTL 00000001) [ 0.026739] DMAR: Host address width 36 [ 0.026742] DMAR: DRHD base: 0x000000fed90000 flags: 0x0 [ 0.026751] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap c0000020e60262 ecap f0101a [ 0.026756] DMAR: DRHD base: 0x000000fed91000 flags: 0x1 [ 0.026761] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap c9008020660262 ecap f0105a [ 0.026765] DMAR: RMRR base: 0x000000bc8e6000 end: 0x000000bc8f7fff [ 0.026768] DMAR: RMRR base: 0x000000bf000000 end: 0x000000cf1fffff [ 0.026772] DMAR-IR: IOAPIC id 2 under DRHD base 0xfed91000 IOMMU 1 [ 0.026775] DMAR-IR: HPET id 0 under DRHD base 0xfed91000 [ 0.026777] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping. [ 0.027020] DMAR-IR: Enabled IRQ remapping in x2apic mode

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

после установки драйверов пишет ошибка 43

А kvm замаскировать не забыли? Не уверен, как в чистом qemu, а в libvirt'е это дописывается вот так в .xml виртуалки:

<features>
	<hyperv>
		...
		<vendor_id state='on' value='whatever'/>
		...
	</hyperv>
	...
	<kvm>
	<hidden state='on'/>
	</kvm>
</features>

Ссылка на арчвики.

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

только блин как заставить грузится efi получается только через загручоный диск

gostero
() автор топика
27 декабря 2017 г.

Друзья мои, привет. С картами nvidia, их bios-ами, их драйверами и прочей спецификой глубоко на Вы, всегда предпочитал ATI/AMD.
Но, внезапно, возникло желание прокинуть в windows гейфорс gtx770. То, что описано на arch-wiki и в этой ветке проделал, позитивный результат отсутствует. Драйвер виртуальной машины упорно рапортует об ошибке со страшным кодом 43.
Ощущаю боковой линией, что решение где то на поверхности.
P.S. Виртуальный виндовз установлен через ovmf, если что.
Дистрибутив linux-mint 18.3, он же ubuntu 16.04.

King_Carlo ★★★★★
()
Последнее исправление: King_Carlo (всего исправлений: 1)
Ответ на: комментарий от King_Carlo

Карта пробросилась, никаких проблем не возникло, свежий софт всё решил.
Нужен libvirt поддерживающий <vendor_id state='on' value='whatever'/>

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