LINUX.ORG.RU

Опрос: что вам удалось или не удалось пробросить и как хорошо работает?

 , , , ,


5

3

Предлагаю отписаться тем, кому удалось пробросить видеокарту в qemu/kvm/xen - или не удалось (полностью, вообще) и как стабильно работает.

Мне не удалось пробросить полностью Sapphire Radeon HD 7790, потому что именно 7790 (вероятнее всего независимо от производителя) хоть и пробрасывается и работает на отдельном мониторе через видеовыход карты, но драйвера (любую версию, на любой версии windows) установить невозможно, что полностью лишает смысла сам факт проброса.

Мне пока-что не удалось полностью пробросить Gigabyte Radeon HD 7870, по той же причине, хотя здесь пробовал как через seabios, так и UEFI/OVMF, но в таблице с qemu/kvm, где люди делятся результатами, а также в списке Xen достаточно 7870, так что шанс есть.

Просьба полностью указать ваше железо: материнка, GPU хост и GPU гость.


Успешно непробросил 6600gt и gt610 на ga-p75d3 (видюшки менял местами - безрезультатно). И успешно непробросил gt610 на intel dq77mk. На гиге побывали убунта 10.04, 12.04, centos6, fedora17. На интеле я долго не возился с gt610 на ubuntu 14.04.

P.S. классная табличка. Непременно воспользуюсь при покупке видяхи. Попробуй все-таки на федоре.

andrew667 ★★★★★
()

R9 270X, работает без проблем. См. мою галерею, там инструкция в комментах. Гента тильдовая, весь софт - самыйсвежий.

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

Не-а. У меня без встроенной графики, просто две видяхи. Но, по идее, должно быть норм, если камень с чипсетом умеют в виртуализацию и биос матери не отключает встроенное видео. Ты же при загрузке указываешь ядру pci_stub для видеокарты гостя?

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

кто все эти люди?

если у тебя rom видеокарты UEFI (можно проверить rom-parser), то можно избежать проблем с legacy VGA проблемами и грузить карту через UEFI биос, а не через опять-таки legacy (seabios, по-дефолту в qemu).

Считается, что современные UEFI-видеокарточки проще пробрасываются и стабильнее работают.

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

Да, у меня всё максимально правильно, ядро грузится:

iommu=pt pci-stub.ids=1002:6818,1002:aab0
в dmesg за IOMU/DMAR всё ок, никаких ошибок:
[    0.323963] AMD-Vi: Found IOMMU at 0000:00:00.2 cap 0x40
[    0.323965] AMD-Vi: Extended features:  PreF PPR GT IA
[    0.323968] AMD-Vi: Interrupt remapping enabled
[    0.324191] AMD-Vi: Initialized for Passthrough Mode
в опциях kvm стоит:
options kvm allow_unsafe_assigned_interrupts=1 ignore_msrs=1
машину запускаю:
qemu-system-x86_64 -enable-kvm -m 4096 -cpu host,hv_time,kvm=off \
-smp 4,sockets=1,cores=4,threads=1 -vga none -rtc base=localtime \
-device vfio-pci,host=01:00.0,multifunction=on \
-drive file=windows.img,id=disk,format=raw,if=none -device ide-hd,bus=ide.0,drive=disk \ 
-drive if=pflash,format=raw,readonly,file=/usr/share/qemu/efi-bios.bin \ 
для UEFI/OVMF или без него с seabios: bios.bin и x-vga=on после multifunction=on.

На восьмерке всё отлично работает до момента установки дров (без каталиста или с ним), а на семерке бсодит после успешной установки и перезагрузки.

qemu версия и ядро свежайшие (и собраны правильно): qemu-2.1.50, kernel 3.17.1

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

пока что ты вообще ничего не пробросил

как это вообще не пробросил, если виртуалка работает на отдельном мониторе, который работает на пробрасываемой карте, а в винде в GPU-Z показывает её название и спеки (частично)?

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

о0
Ну фиг знает. Может попробовать другую мать/видео? У меня запускается так:

/usr/bin/qemu-system-x86_64
 -name qwerty_esound
 -S
 -machine pc-i440fx-2.0,accel=kvm,usb=off
 -cpu host
 -m 4096
 -realtime mlock=off
 -smp 8,sockets=1,cores=8,threads=1
 -uuid d616d9cd-aa9d-564a-7999-704787e5ea6c
 -no-user-config
 -nodefaults
 -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/qwerty_nosound.monitor,server,nowait
 -mon chardev=charmonitor,id=monitor,mode=control
 -rtc base=localtime
 -no-shutdown
 -boot menu=off,strict=on
 -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2
 -device ahci,id=ahci0,bus=pci.0,addr=0x7
 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5
 -drive file=/home/neverloved/work/qemu_windows/windows.img,if=none,id=drive-virtio-disk0,format=qcow2,cache=none,aio=native
 -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0xe,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1
 -drive file=/home/neverloved/work/qemu_windows/windows_games.img,if=none,id=drive-virtio-disk1,format=qcow2,cache=none,aio=native
 -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0xd,drive=drive-virtio-disk1,id=virtio-disk1
 -fsdev local,security_model=mapped,id=fsdev-fs0,path=/home/neverloved
 -device virtio-9p-pci,id=fs0,fsdev=fsdev-fs0,mount_tag=share,bus=pci.0,addr=0xc
 -netdev tap,fd=19,id=hostnet0
 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:34:a4:74,bus=pci.0,addr=0x3
 -chardev pty,id=charserial0
 -device isa-serial,chardev=charserial0,id=serial0
 -vnc 127.0.0.1:0
 -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,bus=pci.0,addr=0x2
 -device intel-hda,id=sound0,bus=pci.0,addr=0x4
 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0
 -device vfio-pci,host=03:00.1,id=hostdev0,bus=pci.0,addr=0x8
 -device vfio-pci,host=03:00.0,id=hostdev1,bus=pci.0,addr=0x9
 -device vfio-pci,host=00:12.0,id=hostdev2,bus=pci.0,addr=0xa
 -device vfio-pci,host=00:12.2,id=hostdev3,bus=pci.0,addr=0xb
 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6
 -msg timestamp=on
Виртуалку создавал в virt-manager, потом ручками добавлял в конфиг девайсы, которые надо пробрасывать.
KVM CPU performance (комментарий) тут конфиг virt-manager. Больше ничем помочь не могу, к сожалению.

NeverLoved ★★★★★
()

Supermicro X10SAE, Intel HD Graphics P4600, NVidia GTX 650 — УМВР, как x-vga=on и патчами на ядро, так и с OVMF и стоковым ядром. В качестве гостей пробовал Windows 7 (x-vga), Windows 8.1 (OVMF), Mac OS X 10.9 (x-vga).

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

Ура, 7ка взлетела, драйвер стал, всё работает.

Не использовал q35 чипсет, а попробовал дефолтный и взлетело, кстати об этом Alex Williamson говорил, что значимость q35 преувеличена, если просто пробрасывать.

Прогнал бенчмарк Unigine Valley, ну, не 1:1 к нативу, но 30 FPS и 1500 скора дает (в нативе 2500), еще нужно где-то подкрутить, но уже работает и это хорошо.

Если взлетает семерка, значит и восьмерка тоже взлетит.

Спасибо.

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

Можешь объяснить, почему ты используешь qxl, а не none?

 <model type='qxl' ram='65536' vram='65536' heads='1'/>
ведь если qxl, то зачем пробрасывать?

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

Это с первой установки осталось еще, я же сначала запилил виртуалку, а потом в нее пробрасывал радеончик. А выпилить лень, ибо виртуалка в автостарте и запущена всегда.

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

т.е. ты запускаешь с qxl и у тебя работает на всю мощь карта? Как такое возможно, ведь qxl это эмуляция, реальная карта это none - или я где-то что-то не так понял?

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

Ты не так понял. QXL использовался когда я ставил винду в виртуалку. Потом я в конфиге виртуалки добавил железо, которое собирался пробросить. А QXL не удалил. Удалю как-нибудь.

В диспетчере устройств отображается и qxl и видяха, qxl выключен.

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

allow_unsafe_assigned_interrupts=1

Очень зря. Тогда iommu groups тебе вовсе не нужны. Пост от nbhs внимательно читал? Он периодически обновляется. Там же и патчи на ядро.

1500 скора дает (в нативе 2500)

Фигово. На q35 должно взлетать и делать 2490. У самого железо свежее intel/nvidia, но не топовое. Поищи на лоре аналогичные темы, может быть найдёшь подходящий рецепт, тема поднималась не 1 раз.

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

Очень зря.
Пост от nbhs внимательно читал?

хм, читал и от него же исхожу, он же и говорит, если:

Or if vfio-pci was built as a module
как по-дефолту на арче и как я собрал в генте:
CONFIG_VFIO_IOMMU_TYPE1=m
CONFIG_VFIO=m
CONFIG_VFIO_PCI=m
CONFIG_VFIO_PCI_VGA=y
CONFIG_KVM_VFIO=y
то:
echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/vfio_iommu_type1.conf

Но нужно пробовать по-другому, сейчас займусь.

На q35

гуру проброса Alex Williamson (aw на арче и http://vfio.blogspot.com) говорит, что q35, если нужен только проброс, а не тонкости в работе PCI, то дефолтный чипсет - лучше - особенно для восьмерки.

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

ааа, пардон, так

allow_unsafe_assigned_interrupts
а не
allow_unsafe_interrupts=1

это ты цитируешь настройки kvm! Сейчас уберу, не помню где взял, чтобы поставить туда.

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

Да, это я тупанул, убрал все unsafe, после ребута:

[    0.324517] AMD-Vi: Found IOMMU at 0000:00:00.2 cap 0x40
[    0.324522] AMD-Vi: Interrupt remapping enabled
[    0.324745] AMD-Vi: Initialized for Passthrough Mode
Значит с железом, более или менее, у меня нормально.

Спасибо.

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

> Mac OS X 10.9 (x-vga)
Дружище, как тебе это удалось? Какой образ брать, что, где в конфигах менять?

Всех подробностей не помню (ставил год назад), но возни было порядочно, с накладыванием патчей на ядро и Seabios, сборкой Chameleon и FakeSMC из исходников. Сейчас все должно быть намного проще, ставить можно из оригинального *.iso (его можно сгенерировать из скачанного из App Store образа). Подробности тут: http://www.contrib.andrew.cmu.edu/~somlo/OSXKVM/ С самим пробросом — никаких отличий от других ОС нет, встроенные драйвера NVidia нормально работают.

Интереснее будет попробовать поставить 10.10 в виртуалку с OVMF. Legacy boot вроде как в 10.10 убрали, поэтому старый трюк с загрузкой mach_kernel из Chameleon'а не прокатит.

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

А как сегодня дело обстоит с этим OVMF? Q35 он поддерживает? Как qemu нужно запускать, чтобы проверить?

reagentoo
()

В общем, после почти недели трахомудии с vfio, уже расстроившись насчет того, что не удалось нормально пробросить две карты (которые пришлось купить): 7790 и 7870, решил, как последняя попытка и вариант перед забиванием на это - попробовать по рекомендации Novell-ch - использовать не vfio assign, который используют все и практически во всех мануалах используется, а «старый» способ: pci-assign.

И о боги, получилось идеально пробросить 7780 в win8.1, установить свежий драйвер - никаких проблем, идеально, стабильно, качественно работает.

Но я использую не pc-1.3 чипсет, который использует Novell-ch, и не модный q35 - который с восьмеркой вообще не работает, а дефолтный (i440fx) + ovmf, но ovmf не с ебилда-9999 или скачанный, а из арчевского пакет ovmf-svn, он там внутри полный, без SCM legacy, pure UEFI короче.

Без него либо драйвер отваливается при нагрузке, либо артефакты.

В общем, запускаю так:

qemu -enable-kvm -m 4096 -cpu host,kvm=off -smp 4,sockets=1,cores=4,threads=1 \
-vga none -rtc base=localtime -pflash ovmf_x64.bin -boot menu=on \
-usb -usbdevice host:04f3:0216 -usbdevice host:1241:1603 \
-device pci-assign,host=01:00.0 \
-device virtio-scsi-pci,id=scsi -drive file=windows8.img,if=virtio,id=disk_primary,format=raw \
-drive file=windows8.iso,id=iso_install,if=none -device scsi-cd,drive=iso_install \
-cdrom virtio-win-0.1-81.iso \
кстати, romfile=* можно не подгружать конкретно для Gigabyte GV-R787OC-2GD, работает на пару процентов лучше, если не грузить ром, наверное хорошо читает напрямую.

Графические пакеты, 3D, opencl - летает, но еще нужно пооптимизировать, чтобы подойди близко 1:1 к нативу, т.к. у меня сейчас отставание примерно 20-25% от натива на тяжелых бенчмарках.

Если что, использовал gentoo-sources-3.17.1 без каких-либо патчей для проброса, а также свежий qemu-2.1.50;

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

Но я использую не pc-1.3 чипсет, который использует Novell-ch, и не модный q35 - который с восьмеркой вообще не работает, а дефолтный (i440fx)

Всего их два, остальные производные. qemu-system-x86_64 -M help. Ты какую семёрку ставил, что она вываливалась в бсод? У меня, например семёрка volume sp1 не могла успешно загрузиться после какого-то обновления из списка необязательных, причём древнего... Но в «синий экран» ещё ни разу не уходила. А так софт почти тот же - гента, ядро 3.16.2, qemu-2.1, q35, vfio-pci. Вот последний мой способ запуска http://paste.org.ru/?54ji3z.

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

Я попробовал с десяток образов, включая оригинальные, SP1 и всякие разные. В общем, я вопрос с семеркой для себя закрыл, у меня идеально, стабильно, фантастически работает 8.1, разница по OpenCL бенчмарку LuxMark между нативом и pci-assign всего 14% (10730 против 9208 скора), но это я еще не оптимизировал всякими hv_relaxed,hv_vapic,hv_spinlocks=0x1000 , не активировал MSI и всякие разные другие оптимизации.

Но результат мне уже нравится, в dmesg не валится мусор и ошибки, как это происходит при vfio-assign (на котором так и не получилось завести).

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

q35

А ты пробовал восьмерку ставить на нём? Даже не устанавливается (не только у меня), виснет на Getting devices ready - при установке, либо же на загрузке уже установленной на другом любом чипсете, если подставить q35.

К тому же, Алекс Вилльямсон (aw с арч ветки), это тот самый чел, который курирует (и коммитит vfio-assign в ядро) в Red Hat всё это дело, в общем он говорит, что q35 ненужен на самом деле.

P.S. я тут столкнулся с говнецом, полдня потерял на выяснение проблемы, оказывается ovmf имадж (UEFI bios) лучше монтировать как readonly, у меня непонятно каким хером записало туда несколько байт и начались проблемы, пока не диффнул и заменил.

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

«синий экран»

это конкретно в моём случае известная проблема «atimpag.sys» или как-то так.

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

vfio-assign

Где ты взял такое название???

К тому же, Алекс Вилльямсон (aw с арч ветки), это тот самый чел, который курирует (и коммитит vfio-assign в ядро) в Red Hat всё это дело, в общем он говорит, что q35 ненужен на самом деле.

Пруфы где?

Ты пробовал, вообще, к ведру то своему патчи применить от nbhs?

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

Где ты взял такое название???

ну, это я образно говоря называю следующее:

/etc/init.d/vfio-assign

#!/sbin/runscript

start() {
  ebegin "Assigning pci devices to vfio-pci"
  modprobe vfio-pci

  for dev in ${DEVICES//" "/ }; 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 "Binding device $dev"
        echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id
  done

}

/etc/conf.d/vfio-assign

DEVICES="0000:01:00.0 0000:01:00.1"

Пруфы где?

Q35 is largely overrated.  There are some configurations of Linux that need it, but Windows is fine on 440FX.

он в ветке же не раз объяснял конкретно почему.

к ведру то своему патчи применить от nbhs?

патчи для чего именно?

with OVMF, Radeon cards don't require any quirks when running with EFI
а те патчи (acs override patch + i915 vga arbiter fixes), которые предлагает nbhs предназначены для связки intel/radeon или intel/nvidia, у меня же: radeon/radeon, тем более через UEFI, и те проблемы, которые решают эти патчи - у меня не возникают. (кстати acs override патчит именно quirks.c).

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

и да, я патчи всё-таки конечно накладывал, не влияет ни на что в моем случае.

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

Это не мой персональный скрипт, это NeverLoved сделал для генты из сервиса для systemd от nbhs «vga device assignment using vfio-pci.» с первой страницы.

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

Хз, короче, почему у тебя не взлетает как у всех. В госте у меня кажет вот что http://i.imgur.com/gJWCEnO.gif. Выйдет шинда10, тогда, наверное, начну этот хвалёный uefi/ovmf теребить, может быть и q35 под него допилят к тому времени. Нужно будет, ещё секьюрность запуска продумать, пускать из под рута всё это дело - не айс. А сейчас смысла не вижу, 8ка имхо говно.

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

Чтобы закрыть вопрос с q35, собрал цитаты в дополнение к вышеуказанной, Alex'а Williamson'а:

And I keep dis-recommending Q35, it's not needed for Windows guests
why are you using Q35?  Try 440FX
Use 440FX not Q35
I'm encouraging people just trying to run windows to forget
about Q35 and just use the default 440FX model. 
Any particular reason for using q35? 
I haven't had time yet to try to attempt a q35+ovmf install
and I have little reason to switch from 440fx other than curiosity.
Q35 or 440FX?  virtio + 440FX are likely to be the best performing and best supported combo.
и это только за прошлый месяц, лень копать раньше :)

Ну и на днях он опубликовал интерактивную презинтацию своего доклада в Нимечинне (+ видос оттуда), где говорит:

440FX vs Q35

Largely FUD:

    - Q35 looks more like the host platform
    - Some Linux drivers assume an upstream PCIe port

In reality:

    - Windows doesn't care
    - Linux is fixable

440FX is likely the easier path for Windows guests
такие дела.

xinu
() автор топика

Насколько вообще видеокарта имеет значение? На хабре пишут что значение имеет только материнская плата и процессор.

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

Имеет существенное значение, например если у тебя 7790 - можно про установку драйверов на проброшенной карте забыть, что делает сам факт успешного проброса бесполезным, также, хоть и пробрасываются карты с vga-bios, но карты с UEFI-биос'ом (можно узнать rom-parser'ом от aw; или из описания карты) пробрасываются и работают лучше.

Также Nvidia Quadro для гостя не годится, в общем смотри истории успеха здесь.

Кстати, пишут, что серия K штеудов не годится, но это не так - не у всех K-процев отсутствует VT-d, например у i5-4690K оно есть и работает. Нужно смотреть в спеку короче.

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

В ку тридцать пятом у большинства работает и у меня тоже. 440 ф икс скоро уйдёт в забвение как и всякие piix шинки. У тебя получилось на vfio то завести? или x4 2.0 вместо x16 3.0 доволен?

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

получилось на vfio то завести?

пока что нет.

x4 2.0 вместо x16 3.0 доволен?

разница ~10% между нативом и текущим сетапом.

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

Есть трабла с радеоном 7970 - после перезагрузки гостя он уже не может стартануть. Необходимо перегружать хостовую систему. Поэтому вместо ребута гостя, приходится его выключать и ребутить хост.

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

Ах, да. Можно перед каждым выключением гостя извлекать карточку (вручную или с помощью deveject.exe, причём, deveject можно прописать в сценарий выключения винды), тогда перегружать хост не обязательно, но вместо перезагрузки гостя надо его выключать и включать. Это снижает остроту проблемы, но полностью её не обходит.

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

Не, vfio не помогает. Правда, пробовал достаточно давно. Просто прокинул 6970, с которым проблем нет. А то из-за постоянных перестановок карточек уже разбил все отверстия под винты и карточки держатся на честном слове.

anonymous
()

Успешно пробросил

Видеокарта: Asus Radeon R9 270X

Процессор, он же хостовая видеокарта: Intel Core i5 4590

Мать: GA-Z97M-DS3H

Пробрасывал почти полностью по инструкции на хабре: http://habrahabr.ru/post/211909/

Виртуальную машину создавал в virt-manager, заодно пробросил logitech-приемник

Поначалу после выключения гостя в dmesg появлятся oops «kernel tried to execute NX-protected page - exploit attempt» и libvirtd вешался, а за ним и хост при попытке перезагрузиться.

Решилось добавлением в libvirt строчки в

<driver name='vfio'/>

    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </hostdev>

Гостевая винда без проблем загружается и выключается несколько раз без перезагрузки хоста.

Теперь думаю как бы отключать питание от видеокарты когда работаю в linux.

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