LINUX.ORG.RU

PRIME на десктопном железе?

 , ,


8

5

Собираю систему на основе i7 4771 и какой-нибудь материнки с поддержкой VT-d. Имеется в наличии AMD HD 6870 которой со свободным драйвером под мои задачи более чем хватает.

Но вот стало интересно, а работает ли DRI PRIME на десктопном железе? А полноценный GPU offloading? Можно ли полностью отключить видеокарту чтобы не шумела?

Будет ли оно конфликтовать с пробросом видеокарты?

PS: Если кто-то использует PRIME или VT-d буду очень благодарен за конфиги железа


я использую
asrock h61m itx+ i5 3330 + hd7790

вот проброс карты в qemu и вывод аппаратно ускоренного 3д на монитор qemu, хотя обычно я использую физический выход на карте
https://www.youtube.com/watch?v=f9ny4NMizoU

вот DRI_PRIME в работе
https://www.youtube.com/watch?v=L_qzVs9Yn7U

на моем канале еще штук 15 видео с разных игр.

Карту влинуксе я не отключал, но когда она проброшенна винда сама ее отключает полностью, даж куллер останавливает при большом простое.

Novell-ch ★★★★★
()

Чуть не забыл, cast Novell-ch. Идея использовать PRIME пришла мне в голову когда я у тебя на блоге увидел сабж:
http://www.gearsongallium.com/?p=1177
Можешь написать какая именна у тебя материнская плата?

Ну и ещё вот этот пост про проброс видеокарты:
Есть ли смысл покупать новое железо с VT-D для «проброса» видеокарты (для тяжелых игр под виртуалкой)? (комментарий)
Это на том же железе? Оно как-то конфликтует с PRIME?

Вот что бы я хотел:

  • Есть два монитора. Оба подключу к интеграшке и второй ещё к дискретке (для виртуалки).
  • Большую часть времени юзать дискретку под DRI_PRIME.
  • Иногда запускать виртуалку и пробрасывать дискретку туда.
  • Потом виртуалку выключать и опять юзать DRI_PRIME. Будет ли это работать?
qiomi
() автор топика
Ответ на: комментарий от Novell-ch

Спасибо большое за ответ, а то я как раз тебя скастовал, т.к видел твои видюшки.

Нет информации о материнке под LGA1150 на которой это взлетит? Я пока смотрю в сторону Asrock Z87 Extreme4, но непонятно, что там с VT-d, а хотелось бы именно Haswell взять.

Карту влинуксе я не отключал, но когда она проброшенна винда сама ее отключает полностью, даж куллер останавливает при большом простое.

А когда ты вырубаешь виртуалку карта опять появляется на хосте и её можно использовать через DRI_PRIME?

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

нет, думаю так не будет, тут или виртуалке отдать, либо прайму, я не эксперементировал особо, если нужно просто перегружаюсь, и юзаю либо прайм либо виртуалку.

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

нет, думаю так не будет, тут или виртуалке отдать, либо прайму, я не эксперементировал особо, если нужно просто перегружаюсь, и юзаю либо прайм либо виртуалку.

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

А есть какие-то подводные камни касательно железа или это на любой материнке взлетит?

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

Тут я не спец, просто в биосе был пункт vt-d, как только вставил проц с поддержкой vt-d все заработало, если бы сейчас брал мать, то взял бы с большим количеством контролеров (или хотя бы пси слотов), что бы можно было пробросить сетевую, или вообще контроллер дисков, но для этого их нужно иметь больше двух и что бы они сидели в разных IOMMU группах.

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

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

А на что именно смотреть в спеках чтобы об этом узнать?

Просто хотелось бы уложится в бюджет 18-20к рублей на всё. Сейчас например смотрю на ASRock Z87 Extreme6, т.к есть подтверждения о работоспособности VT-d.

qiomi
() автор топика
Ответ на: комментарий от qiomi
for i in /sys/kernel/iommu_groups/*;do echo "IOMMU: $i";for dev in $i/devices/*;do lspci -s "${dev##*/}"; done; echo;done
IOMMU: /sys/kernel/iommu_groups/0
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller (rev 09)

IOMMU: /sys/kernel/iommu_groups/1
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Bonaire XT [Radeon HD 7790/8770]
01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Device aac0

IOMMU: /sys/kernel/iommu_groups/2
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (rev 09)

IOMMU: /sys/kernel/iommu_groups/3
00:16.0 Communication controller: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 (rev 04)

IOMMU: /sys/kernel/iommu_groups/4
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)

IOMMU: /sys/kernel/iommu_groups/5
00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 05)

IOMMU: /sys/kernel/iommu_groups/6
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b5)
00:1c.3 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 4 (rev b5)
00:1c.5 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 6 (rev b5)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)
04:00.0 USB controller: ASMedia Technology Inc. ASM1042 SuperSpeed USB Host Controller

IOMMU: /sys/kernel/iommu_groups/7
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)

IOMMU: /sys/kernel/iommu_groups/8
00:1f.0 ISA bridge: Intel Corporation H61 Express Chipset Family LPC Controller (rev 05)
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family SATA AHCI Controller (rev 05)
00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller (rev 05)

хотя может это и не важно, я спокойно отдаю 04:00.0 USB controller: ASMedia Technology Inc. ASM1042 SuperSpeed USB Host Controller хотя он в группе еще с кучей железа

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

В общем спасибо огромное! Наверное куплю на днях i7 4771 с ASRock Z87 Extreme6 и попробую это дело настроить.

qiomi
() автор топика
Ответ на: комментарий от Novell-ch

Да, ещё один небольшой вопрос. А не тестил ли ты проброс видеокарты в гостя с линуксом?

Просто мне иногда бывает нужен OpenCL и интересно было бы иметь отдельную систему для AMD Cataclysm.

qiomi
() автор топика
Ответ на: комментарий от Novell-ch

Ещё мне было бы безумно интересно узнать, что случается с системой, если у дискретной карты случается GPU lockup?

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

раньше винда иногда вылетала, в консоль qemu падало пару строк и все, можно убить по ctrl+c или закрыть окно, но я уже давно подобного не видел, починили дрова или qemu.
Но баг pci-stub метода так и остается, нельзя перегрузить виртуалку не выключив видеокарту в диспетчере устройств, иначе при загрузке система стает колом, но этот баг легко обходится парой скроптов и жить мне особо не мешает.

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

Извини, неточно задал вопрос. Я имею ввиду если ты запускаешь какой-то софт через DRI_PRIME и в этот момент GPU лочится, то что происходит с системой?

А то есть игра шейдеры которой лочат мне GPU на R600, вот и интересно что произойдёт если я запущу её через PRIME.

qiomi
() автор топика
Ответ на: комментарий от Novell-ch

иксы падали, а вот что бы полностью висла система не припомню

Ну у меня тупо виснут иксы и невозможно переключится на консоль. :( Хотя по ssh пускает и иногда можно убить иксы, тогда работает.

Есть один ещё более оффтопный вопрос, сейчас на мыло скину.

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

Итак, для тех кому интересно отписываю о результатах. Купил данное железо:
i7 4771
Asrock Z87 Extreme6
Ну и плюс дискретка AMD которая уже была. Два своих монитора подключил к интеграшке: 1920x1200 (HDMI) + 1920x2080 (DVI).

Kubuntu 13.10 + ядро 3.14 + Oibaf PPA. По тестам DRI_PRIME=1 работает из коробки вообще без какой либо настройки. Производительность как и VT-d пока не тестировал, но сейчас этим займусь.

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

в кде часто мучают черные окна с праймом, я или отключал включал эффекты, а сейчас просто запускаю xcompmgr и волосы стали мягкими и шелковистыми

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

а сейчас просто запускаю xcompmgr и волосы стали мягкими и шелковистыми

Забавный момент. Я сидел на древнейшем процессоре поэтому у меня xcompmgr уже давно используется.

Т.е с Kwin будут черные окна?

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

да, как только не шаманил, особо жить не мешало, но часть удобства терялось

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

QEMU KVM с оффтопиком? Как запилить? Что мешает мне перейти на оффтопик - игры
Можно ли пробросить nvidia в QEMU? VT-x потянет? Хотя бы Windows 7 кастрированную (без IE, WMP и 100500 пакетов, жрет ~300mb ram - сам пилил)

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

QEMU KVM с оффтопиком? Как запилить?

Сейчас разбираюсь по этому топику: https://bbs.archlinux.org/viewtopic.php?id=162768

Можно ли пробросить nvidia в QEMU?

Зависит от карты, но шанс гемороя с нвидией высокий.

VT-x потянет?

Нет. Нужно чтобы процессор поддерживал VT-d, материнка тоже желательно правильная.

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

нвидией

Fermi
GTS450
Нуво все тащит

VT-d

VirtualBox, VMWare и kQEMU (windows) все тащат быстро и удобно
Только сам процессор хар-ками не блещет ;)
Мать Gigabyte Ga-g41-s2pt
Есть ли мануал/хау-ту по пробросу PCI-X видяшки?

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

VirtualBox, VMWare и kQEMU (windows) все тащат быстро и удобно

Это не важно. Для проброса нужна поддержка процессором в случае интела.

Только сам процессор хар-ками не блещет ;)

Нужно знать модель и есть ли там VT-d. Я честно говоря не видел сакцесс стори со старыми процессорами, но мало ли.

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

А в xen не прокинуть?

Без поддержки железа оно нигде не будет работать. Я уже один раз много эксперементировал с VT-d более года назад и оно даже на материнке без правильного биоса не взлетит.

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

Буду писать тут о своих успехах/неудачах в процессе, мало ли кому пригодится. Сегодня апгрейднулся на Kubuntu 14.04, т.к тут свежая версия qemu/seabios в репах. Далее в бубунтошном ядре нет CONFIG_PCI_STUB и VFIO собраны модулями. Поэтому его пришлось собрать.

  1. Подготовил установку вот так:
    apt-get install git-core libncurses5 libncurses5-dev libelf-dev asciidoc binutils-dev linux-source libncurses5 libncurses5-dev fakeroot build-essential crash kexec-tools makedumpfile kernel-wedge kernel-package
  2. Качнул майнлайновое ядро:
    https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.tar.xz
  3. Наложил на него патчи из ОП поста данного топика:
    patch -p1 <0001-Bluetooth-allocate-static-minor-for-vhci.patch
    patch -p1 <0002-module-allow-multiple-calls-to-MODULE_DEVICE_TABLE-p.patch 
    patch -p1 <0003-module-remove-MODULE_GENERIC_TABLE.patch 
    patch -p1 <0004-Revert-syscalls.h-use-gcc-alias-instead-of-assembler.patch 
    patch -p1 <radeon_load_vbios_from_file.patch
    patch -p1 <override_for_missing_acs_capabilities.patch
    patch -p1 <i915_314.patch
  4. Скопировал конфиг текущего ядра (у меня уже было установлено и загружено 3.14 из Kernel PPA):
    cp -vi /boot/config-`uname -r` .config
    make oldconfig
  5. Через «make xconfig» включил все указанные опции и pci-stub
  6. Далее собрал ядро через «make -j 5» и упаковал его вот этой командой:
    fakeroot make-kpkg --initrd --append-to-version=-custom kernel-image kernel-headers
  7. Установил новое ядро дебами.
  8. Далее методом проб и ошибок в /etc/default/grub отправилось вот это и потом рестарт:
    intel_iommu=on pci-stub.ids=1002:6719,1002:aa80 vfio_iommu_type1.allow_unsafe_interrupts=1
    Хотя у меня большие сомнения о необходимости последней опции на моём железе, позже проверю.
  9. Далее скриптом из того-же топика привязал дискретку к vfio-pci
  10. После ещё потраченного времени успешно запилил виртуалку с проброшенной в неё видеокартой, второй сетевухой и мышкой с клавиатурой:
    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=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on \
    -device vfio-pci,host=01:00.1,bus=root.1,addr=00.1 \
    -drive file=/opt/vrt/test.img,id=disk,format=raw -device ide-hd,bus=ide.0,drive=disk \
    -drive file=/opt/vrt/ubuntu-12.04.4-desktop-amd64.iso,id=isocd -device ide-cd,bus=ide.1,drive=isocd \
    -device pci-assign,host=04:00.0,rombar=0 \
    -usb -usbdevice host:1c4f:0002 -usbdevice host:040b:2013 \ 
    -device ich9-intel-hda,bus=pcie.0,addr=1b.0,id=sound0 \
    -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 

В итоге успешно установил в виртуалке бубунту и проверил работоспособность видеокарты на открытых драйверах, всё как надо. Но проприетарные драйвера вешают иксы в виртуалке.

Естественно на всё ушло гораздо больше времени, но все главные шаги тут описаны. В процессе я поломал OpenGL на хосте и сейчас буду пытаться понять когда именно ну и тестить оффтопик.

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

Итак что было мной сделано:

  1. Установлен оффтопик в виртуалку.
  2. Установлен драйвер AMD который начал его крашить в atimpag.sys.
  3. Первое что было нагуглено это проблемы с HDMI audio, поэтому звуковуха была убрара из конфига и перебиндена на pci-stub.
  4. Отключение звуковухи не помогло и второе что я нашёл было «clear_emulator_capabilities=0» в qemu.conf
  5. Все мои попытки записать что-то в /etc/qemu/qemu.conf оканчивались ошибкой «parse config» ну и в общем я не осилил данную задачу. Если что моя версия qemu:
    qemu --version
    QEMU emulator version 1.7.91 (Debian 2.0.0~rc1+dfsg-0ubuntu1), Copyright (c) 2003-2008 Fabrice Bellard
  6. Почувствовав себя неосилятором я погуглил ещё варианты и одним из них было использование дампа rom карты для инициализации. Один из патчей ядра как раз эту фитчу активирует.
  7. Я перезагрузился со старым ядром без IOMMU где у меня работает и Intel и radeon драйвера и сдампал rom видеокарты:
    cd /sys/bus/pci/devices/0000\:01\:00.0/
    echo 1 | tee rom
    cp rom /opt/vrt/vbios.rom
    echo 0 | tee rom
  8. Далее я опять бунтунлся со своим кастомным ядром и запустил виртуалку:
    # Скриптом цепляю GPU к vfio-pci, теперь уже без HDMI Audio
    /root/vfio-bind 0000:01:00.0
    # Отключаю второй Ethernet адаптер от хоста
    echo «8086 1539» > /sys/bus/pci/drivers/pci-stub/new_id
    echo 0000:04:00.0 > /sys/bus/pci/devices/0000:04:00.0/driver/unbind
    echo 0000:04:00.0 > /sys/bus/pci/drivers/pci-stub/bind
    # Далее запускаю виртуалку с оффтопиком
    qemu-system-x86_64 -enable-kvm -M q35 -m 2048 -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=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on,romfile=/opt/vrt/vbios.rom \
    -drive file=/opt/vrt/windows.img,id=disk,format=raw -device ide-hd,bus=ide.0,drive=disk \
    -device pci-assign,host=04:00.0,rombar=0 \
    -usb -usbdevice host:1c4f:0002 -usbdevice host:040b:2013 \
    -device ich9-intel-hda,bus=pcie.0,addr=1b.0,id=sound0 \
    -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0
    
  9. Не знаю т, что именно принесло удачу, но ничего не крешнулось. Далее я включал/выключал виртуалку без ROM все работает.
  10. Убунтошная виртуалка сейчас тоже работает отлично и в обоих виртуалках Unigine Heaven пашет на проприетарных дровах.
  11. Можно запустить виртуалку с виндой, стопнуть и сразу запустить бубунту с каталистом, никаких проблем.

На данный момент единственной моей проблемой остаётся нерабочее 3D на хосте, т.е i915 походу не работает корректно поэтому у меня только LLVMPipe.

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

cast Novell-ch. А у тебя работает 3D на интеграшке когда дискретка проброшена? Из-за чего это может происходить?

Ну и ещё у меня модули самосборного ядра вот что пишут в лог при загрузке:

[ 0.508593] video: module verification failed: signature and/or required key missing - tainting kernel [ 0.516006] drm: module has bad taint, not creating trace events [ 0.519473] i915: module has bad taint, not creating trace events [ 61.774544] snd_hda_codec: module has bad taint, not creating trace events [ 61.795056] snd_hda_intel: module has bad taint, not creating trace events [ 374.276400] radeon: module has bad taint, not creating trace events

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

В общем в логе вот это:

[  1315.792] (WW) intel(0): [DRI2] Direct rendering is not supported when VGA arb is necessary for the device
[  1315.795] (II) AIGLX: Screen 0 is not DRI2 capable
[  1315.801] (II) GLX: Initialized DRISWRAST GL provider for screen 0

Т.е по идее DRI не работает с ядром которое собрано с этими патчами и это косвенно подтверждается тем, что на бубунтошном 3.13 все работает нормально. О проблеме написано в топике на рачфоруме, но я не совсем понял подвержены ли ей старые ядра или только 3.14.

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

Работает, квин кубы крутит, на видео есть как юнити 3д в вируалке работает.

Не знаю как это от ядра зависит, я пробрасывают карту уже давно, ядра или сусены или самосборные drm-next. Не понимаю чего всех так тянет к vfio, pci-stub с его возможность оставлять окно qemu, и через него отдавть клаву и мышь мне кажется удобней.

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

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

А можно с этого момента поподробнее о том, как у тебя это всё настроено? Может ссылка на мануал есть?

Я просто настраивал по этой инструкции, т.к не знал, что QEMU/KVM умеет как-то иначе.

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

http://www.gearsongallium.com/?p=1020
http://people.redhat.com/vrozenfe/qxlwddm/ тут можно взять дрова qxl для 8 винды, и иметь разрешение выше 1024х768 , хотя если монитор qemu не нужен его можно отключить в диспетчере устройст, я использую его только для клавы и мышки.


echo «1002 665c» > /sys/bus/pci/drivers/pci-stub/new_id
echo «0000:01:00.0» > /sys/bus/pci/devices/0000\:01\:00.0/driver/unbind
echo «0000:01:00.0» > /sys/bus/pci/drivers/pci-stub/bind
echo «1002 665c» > /sys/bus/pci/drivers/pci-stub/remove_id

echo «1002 aac0» > /sys/bus/pci/drivers/pci-stub/new_id
echo «0000:01:00.1» > /sys/bus/pci/devices/0000\:01\:00.1/driver/unbind
echo «0000:01:00.1» > /sys/bus/pci/drivers/pci-stub/bind
echo «1002 aac0» > /sys/bus/pci/drivers/pci-stub/remove_id


echo «8086 1c20» > /sys/bus/pci/drivers/pci-stub/new_id
echo «0000:00:1b.0» > /sys/bus/pci/devices/0000\:00\:1b.0/driver/unbind
echo «0000:00:1b.0» > /sys/bus/pci/drivers/pci-stub/bind
echo «8086 1c20» > /sys/bus/pci/drivers/pci-stub/remove_id

echo «1b21 1042» > /sys/bus/pci/drivers/pci-stub/new_id
echo «0000:04:00.0» > /sys/bus/pci/devices/0000\:04\:00.0/driver/unbind
echo «0000:04:00.0» > /sys/bus/pci/drivers/pci-stub/bind
echo «1b21 1042» > /sys/bus/pci/drivers/pci-stub/remove_id
echo 3000 > /proc/sys/vm/nr_hugepages



/usr/bin/qemu-system-x86_64 -smp 4,cores=4,sockets=1,threads=1 -cpu host,hv_relaxed,hv_vapic,hv_spinlocks=0x1000 -M pc-1.3 \
-bios /usr/share/qemu/bios.bin \
-vga qxl -enable-kvm -m 5.7G -mem-path /dev/hugepages -boot d \
-rtc base=localtime \
-device pci-assign,host=04:00.0,id=hostpci0 \
-device pci-assign,host=01:00.0 \
-device pci-assign,host=00:1b.0 \
-watchdog i6300esb -watchdog-action shutdown \
-nodefaults \
-drive file=«/disk/disk.qcow2.img»,if=virtio,cache=writethrough,aio=native \
-drive file=«/dev/sdc»,if=virtio,cache=none,aio=native \
-net nic,vlan=0,macaddr=00:4e:1b:dd:f1:a9,model=virtio -net tap,vlan=0,ifname=tap0,script=no,downscript=no \
-name «winda» $* -sdl

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

Благодарю, сейчас попробую настроить по твоей инструкции. Я так понимаю это прокатит только с виндой 8.1? Или в госте с линуксом тоже будет работать?

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

Такс в общем не уверен ожидаемо или нет. На ванильном ядре с pci-assign у меня видюха вроде отдаётся, но в седьмой винде висит в Device Manager c такой ошибкой: «device failed to start error code 10». Сейчас попробую 8.1 винду поставить с ноля.

Плюс я так и не понял каким образом после загрузки хоста можно вернуть карту драйверу radeon и чтобы она ещё и работала после этого.

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

И ещё один небольшой апдейт. Понял почему не пробрасывается. Судя по всему проблема в том, что у меня чипсет выставлен был q35, а для pci assign надо юзать pc-1.3.

Увы, уже установленные ОС с pci assign крешатся, но это уже прогресс.

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

В общем осилил запустить виртуалку с pci assign без труда таким вот образом:

qemu-system-x86_64 \
-boot menu=on \
-enable-kvm \
-M pc-1.3 \
-m 5G \
-cpu qemu64 \
-rtc base=localtime \
-smp 6,sockets=1,cores=6,threads=1 \
-bios /usr/share/qemu/bios.bin \
-drive file=/opt/vm/win81.img,id=disk,format=qcow2,if=virtio,cache=writethrough,aio=native \
-drive file=/opt/vrt/win8.1_x64_dvd.iso,if=ide,media=cdrom \
-drive file=/opt/vrt/virtio-win-0.1-65.iso,if=ide,media=cdrom \
-device pci-assign,host=01:00.0,id=hostpci0 \
-device pci-assign,host=04:00.0,rombar=0 \
-usb -usbdevice host:1c4f:0002 -usbdevice host:040b:2013 \
-name "win81" \
-soundhw hda \
-vga qxl

При этом она вполне нормально перезагружалась без отключения видеокарты и вроде все было нормально. Но в процессе установки какого-то игоря на неё что-то пошло не так и все это добро повисло. После перезагрузки хоста вылеает на «Preparing automatic repair» и естественно ничего не фиксится. Я переустановил эту радость поверх, но после перезагрузки та же шляпа вылезла.

В общем и VFIO и pci assign работают у меня на самосборном ядре 3.14 нормально, а вот на бубнтошном 3.13 не очень. 3D на хосте конечно тоже не работает.

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

пичаль. очень хотелось бы 3д на хосте и при необходимости запускать вм-ку. а в 3.14 какие-то патчи или просто ваниль с нужными модулями?

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

пичаль. очень хотелось бы 3д на хосте и при необходимости запускать вм-ку.

Если у тебя есть вторая видеокарта AMD для хоста, то 3D будет работать и с VFIO. Проблема насколько я понял исключительно с тем как работает i915.

а в 3.14 какие-то патчи или просто ваниль с нужными модулями?

В 3.14 патченое ядро как описано в этом топике. Там на 60 странице написано о проблемах с VGA arbiter.

qiomi
() автор топика
Ответ на: комментарий от Novell-ch

не ясно почему у qiomi оно пропадает.

Патч для i915 ломает DRI в иксах. :-(

Я пока не понял будет ли вообще VFIO работать без патчей, а pci assign сейчас буду пробовать на 3.13 ядре.

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

В общем ещё одна маленькая заметка. Хотел бы сказать, что у меня с патченым ядром 3.14 нет вообще никаких проблем с pci assign. Т.е я могу включать/выключать виртуалку с Windows 8.1 и Catalyst 14.3 Beta вообще без каких либо манипуляций и она просто работает.

При этом у меня уже несколько раз была ситуация, что виртуалка начинает рендомно вываливаться в «Preparing Automatic Repair» и до перезагрузки хоста работать отказывается. При этом у меня сильные сомнения, что проблема вообще связана с видеокартой.

qiomi
() автор топика
Ответ на: комментарий от Novell-ch

Это потому что видеокарты amd начиная с HD7x серии так себя ведут только при отключении монитора, я имею в виду ждущий режим у монитора ну или на кнопочке нажать, отключаются не полностью, они кушают 3 Вт и отключают вентеляторы. Алсо, если crossfire, то вторая видеокарта будет задействоваться только в 3D, иначе она почти всегда будет в режиме ожидания.

bhfq ★★★★★
()
Последнее исправление: bhfq (всего исправлений: 1)

Ещё немного прогресса. Смог успешно запустить виртуалку с бубунтов и vfio на стоковском ядре и при этом 3D на хосте осталось работоспособным. Единственное что при загрузке виртуалки у меня мой первый монитор (тот, что подключен к интеграшке через DVI и дискретке по HDMI) окрашивается кислотными цветами, но простая смена режимов это фиксит.

Что я за это время сделал:

  • Накатил апдейт Kubuntu который поломался из-за qdbus, но легко починилось.
  • Поставил вот это ядро: http://kernel.ubuntu.com/~kernel-ppa/mainline/daily/2014-04-08-trusty/
  • Изменил немного конфиги, в итоге в /etc/modules из не стандартного всё так:
    vfio-pci
    vfio-iommu-type1 allow_unsafe_interrupts=1
    pci-stub ids=1002:6719,1002:aa80,8086:1539
    В /etc/default/grub вот так:
    GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on pci-stub.ids=1002:6719,1002:aa80,8086:1539 vfio_iommu_type1.allow_unsafe_interrupts=1 quiet splash"
    Сразу замечу, что я нуб и опции наверное надо не так указывать. Поэтому pci-stub не работает при загрузке, ну и ладно.
  • Далее перезагрузился и юзал систему как обычно и даже запускал «DRI_PRIME=1 glxinfo».
  • Далее вышел на lighdm, перешел на консоль и делаю от рута вот что:
    # Вырубаю lighdm
    $: service lightdm stop
    
    # Radeon
    echo "1002 6719" > /sys/bus/pci/drivers/pci-stub/new_id
    echo "0000:01:00.0" > /sys/bus/pci/devices/0000:01:00.0/driver/unbind
    echo "0000:01:00.0" > /sys/bus/pci/drivers/pci-stub/bind
    echo "1002 6719" > /sys/bus/pci/drivers/pci-stub/remove_id
     
    # Radeon audio
    echo "1002 aa80" > /sys/bus/pci/drivers/pci-stub/new_id
    echo 0000:01:00.1 > /sys/bus/pci/devices/0000:01:00.1/driver/unbind
    echo 0000:01:00.1 > /sys/bus/pci/drivers/pci-stub/bind
    echo "1002 aa80" > /sys/bus/pci/drivers/pci-stub/remove_id
    
    # Ethernet
    echo "8086 1539" > /sys/bus/pci/drivers/pci-stub/new_id
    echo 0000:04:00.0 > /sys/bus/pci/devices/0000:04:00.0/driver/unbind
    echo 0000:04:00.0 > /sys/bus/pci/drivers/pci-stub/bind
    echo "8086 1539" > /sys/bus/pci/drivers/pci-stub/remove_id
    
  • Оно в процессе немного ругнулось: http://pastebin.com/QJegfHUM Модуль radeon выгрузить не вышло.
  • Далее я просто запустил lightdm, вощёл в сессию и интеграшка продолжила работать на отлично.
  • Тут я от рута привязываю дискретку к vfio-pci скриптом: /root/vfio-bind 0000:01:00.0 0000:01:00.1
  • И запускаю виртуалку:
    qemu-system-x86_64 -enable-kvm -M q35 -m 4G -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=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on \
    -drive file=/opt/vrt/test.img,id=disk,format=raw -device ide-hd,bus=ide.0,drive=disk \
    -device pci-assign,host=04:00.0,rombar=0 \
    -device ich9-intel-hda,bus=pcie.0,addr=1b.0,id=sound0 \
    -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0
    Сразу замечу, что usb я не пробрасываю ибо за мышку отвечает Synergy.
  • В момент запуска хоста что-то не то произошло с цветами основного монитора на хосте, но после включения/выключения работает корректно.

В общем до идеала мне надо понять как корректно вернуть видеокарту хосту. :)

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

Выложил текущие свои команды сюда: http://pastebin.com/ThjxknGf

Собственно сейчас я вроде понял, что pci-assign не всегда работает сразу после vfio-pci, если карта не ресетнулась при выключении виртуалки.

Т.е если после выключения виртуалки с vfio монитор не ушел в сон и на экране зависло изображение значит карта не ресетнулась и нужно ресетнуть её «ручками».

qiomi
() автор топика
Ответ на: комментарий от Novell-ch

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

Да кстати хотел бы заметить, что на моём текущем конфиге окно qemu с "-vga qxl" работает и с pci-assign и с vfio-pci.

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

Ещё один апдейт, подробно написано в этом топике: Проброс видеокарты через pci-assign без перезагрузки в qemu-kvm (комментарий)

В общем если изначально загрузить хост с «blacklist radeon», то можно сначала поюзать дискретку на виртуалках, а потом ресетнуть её, подгрузить radeon и после перезапуска иксов DRI_PRIME=1 будет корректно работать и запускать все на ней.

Так же хочу заметить, что с другим ядром у меня получалось даже не выгружая сам модуль «radeon» успешно забирать у него дискретку не повесив хости или иксы и запихивать её в виртуалку.

А вот как повторно загрузить «radeon» после выгрузки я пока не понял, увы.

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