LINUX.ORG.RU

KVM VGA-Passthrough или проброс видеокарты

 , ,


4

2

Всем привет. Начну с простого: не удается пробросить видеокарту hd6990 на госта. Из железа Asus CROSSHAIR IV FORMULA с процессором Phenom II в биосе необходимая настройка произведена. стоит Arch с ядром pf:

# uname -r
4.8.1-pf

# lspci -nnk
00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890 Northbridge only single slot PCI-e GFX Hydra part (rev 02)
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD/ATI] RD890S/RD990 I/O Memory Management Unit (IOMMU)
00:02.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GFX port 0)
00:04.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 0)
00:05.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 1)
00:06.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 2)
00:07.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 3)
00:0b.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890/RD990 PCI to PCI bridge (PCI Express GFX2 port 0)
00:11.0 SATA controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode] (rev 40)
00:12.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
00:12.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller
00:13.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
00:13.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 SMBus Controller (rev 42)
00:14.1 IDE interface: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 IDE Controller (rev 40)
00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 Azalia (Intel HDA) (rev 40)
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 LPC host controller (rev 40)
00:14.4 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 PCI to PCI Bridge (rev 40)
00:14.5 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI2 Controller
00:16.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
00:16.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor HyperTransport Configuration
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Address Map
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Miscellaneous Control
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Link Control
02:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Cayman XT [Radeon HD 6970]
02:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Cayman/Antilles HDMI Audio [Radeon HD 6900 Series]
03:00.0 USB controller: NEC Corporation uPD720200 USB 3.0 Host Controller (rev 03)
04:00.0 Ethernet controller: Marvell Technology Group Ltd. Yukon Optima 88E8059 [PCIe Gigabit Ethernet Controller with AVB] (rev 11)
05:00.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6315 Series Firewire Controller (rev 01)
06:00.0 SATA controller: JMicron Technology Corp. JMB363 SATA/IDE Controller (rev 03)
06:00.1 IDE interface: JMicron Technology Corp. JMB363 SATA/IDE Controller (rev 03)
07:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Pitcairn XT [Radeon HD 7870 GHz Edition]
07:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series]
02:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Cayman XT [Radeon HD 6970] [1002:6718]
        Subsystem: Micro-Star International Co., Ltd. [MSI] Device [1462:2470]
        Kernel driver in use: vfio-pci
        Kernel modules: radeon
02:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Cayman/Antilles HDMI Audio [Radeon HD 6900 Series] [1002:aa80]
        Subsystem: Micro-Star International Co., Ltd. [MSI] Device [1462:aa80]
        Kernel driver in use: vfio-pci
        Kernel modules: snd_hda_intel

07:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Pitcairn XT [Radeon HD 7870 GHz Edition] [1002:6818]
        Subsystem: XFX Pine Group Inc. Device [1682:3252]
        Kernel driver in use: radeon
        Kernel modules: radeon
07:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series] [1002:aab0]
        Subsystem: XFX Pine Group Inc. Device [1682:aab0]
        Kernel driver in use: snd_hda_intel
        Kernel modules: snd_hda_intel

Я хочу заметить, что у меня 6990, но показывает 6970

Предыстория: Я провел достаточно много за чтением мануалов, изначально делал по мануалу https://bbs.archlinux.org/viewtopic.php?id=162768 о котором все знают. В тот момент так же стоял арч, с ядром вроде 4.2 (полгода назад было). В тот момент это делалось впервые, у меня вроде как получилось (во всяком случае на втором мониторе, подключенным к проброшенной видеокарте загорелась загрузка гостевой винды). Но, так и не удалось включить поддержку iommu на материнке (пришлось использовать опцию, что сильно бьет по производительности)

vfio_iommu_type1.allow_unsafe_interrupts=1

Сейчас я решил вернуться к этому, но требуется ваша помощь. Повторяя свои действия в прошлом, делал все по мануалу(напомню ссылку): https://bbs.archlinux.org/viewtopic.php?id=162768 В процессе тестирования проброса видеокарточки, по мануалу запустил qemu, но госта я на втором мониторе не увидел, как и не услышал характерного шума вентиляторов видеокарты. Т.е. проброс не удался.

Итак, прежде всего хотелось бы включить нормальную поддержку iommu на материнской плате, но:

[    0.105264] AMD-Vi:   DEV_SPECIAL(HPET[0])           devid: 00:14.0
[    0.105265] AMD-Vi:   DEV_SPECIAL(IOAPIC[7])         devid: 00:00.1
[    0.105266] [Firmware Bug]: AMD-Vi: IOAPIC[6] not in IVRS table
[    0.105272] [Firmware Bug]: AMD-Vi: No southbridge IOAPIC found
[    0.105273] AMD-Vi: Disabling interrupt remapping
[    2.485092] AMD-Vi: Found IOMMU at 0000:00:00.2 cap 0x40
[    2.485220] AMD-Vi: Lazy IO/TLB flushing enabled
Почитав об этой проблеме, добавил в загрузку ivrs_ioapic[6]=00:14.0 В итоге ядро грузит с множественным сообщением:
Event logged [ INVALID_DEVICE_REQUEST device=00:14.1 adress=*********** flags=0x0a00
Вместо звезд фигурирует некий адресс в памяти, каждый раз разный. Таких сообщений 12 Дальше естественно не находятся жесткие диски и система не грузится. Гуглеж выдал некоторые результаты, я пробовал подставлять этот несчастный 00:14.1 в таблицу, но безрезультатно. Первый важный вопрос - есть ли тут владельцы моей материнской платы(я их где-то видел на лоре)? Как до них достучаться, ибо у них вроде как проброс удавался.

Далее, я полез в глубокие мануалы, начав с https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF#Isolating_the_GPU опробовал два способа, как результат у меня якобы заработало, во всяком тестовый qemu запустился, но снова проброс не удался с обоими способами из мануала (vfio-pci, pci-stub). =) Вообщем на текущий момент я уже не знаю, куда копать.

PS планирую с чистого qemu пересесть на libvirt в качестве гуи, стоит ли или лучше и дальше использовать qemu? Вроде как libvirt любит сразу «съедать» оперативку под госта

Спасибо всем, кто откликнется



Последнее исправление: Rockon (всего исправлений: 3)
Ответ на: комментарий от ZenitharChampion

Это читаемый и понятный файл запуска, ничего лишнего, просто работает, быстро настраивается.

А GUI, которые не работают или добавляют вермишель используй сам.

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

У меня еще один вопрос: насчет файловой системы

Ответ один: отдельное блочное устройство, т.е. не файл на твоем системном или другом диске, а отдельный диск.

    -drive file=/dev/sdd,media=disk,if=virtio,id=c,format=raw,cache=none,aio=native \
slon
()
Ответ на: комментарий от ZenitharChampion

Я лично не делаю unbind, у меня гостевая карта не обслуживает и не нужна хосту.

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

Это голый qemu. Libvirt используется только для гостов, где не нужен такой гемморой с пробросом (всякие микротики, вебсервер и проч) и не нужны контейнеры. Пробрасываю действительно 02:00.0 и 02:00.1.

В хосте видяшка не используется вообще. Я только что запустил и проверил, 3д работает отлично на максималках, если исключить проблему с synergy в полноэкранных играх, то в целом ок. А с диском очень обидно. Вариантов нет вообще?

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

винда сожрет /dev/mdX аля програмный рейд с ntfs на нем? Или опять будет терять в производительности и ей действительно нужен целый диск?

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

винда сожрет /dev/mdX аля програмный рейд с ntfs на нем?

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

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

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

keystroke(f9) = lockCursorToScreen(toggle)
Что-то можно с этим делать, или может есть какие аналоги(я не нашел) а то бредом попахивает)

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

Я пошаманил, но обнаружилсь следующие проблемы:

1)Этот lockCursorToScreen курсор не работает ни с одной клавишей. Принскрин и скроллок провеля - ни принскрином, ни локскрином не блочится.

2)Сервером synergy назначена пинда, а арч к ней коннектится. В пинде стоит галочка «не держать окно севера поверх всех (для Windows)» Дабы в олнэкранных играх курсор не убегал. В итоге в арч курсор уезжает, а вот обратно уже нет. И как с настройками я не шаманил - не помогает. Курсор не зафиксировать в полноэкранном приложении. Если сервером назначит арч, а к нему подключать пинду - все работает, но проблема 1 не доставляет. К слову на арче synergy 1.8.4, а на пинде 1.8.2

3)Проблема, не связанная с synergy =- проблема с диском. Прогресс на лицо, работает в разы лучше. Но все же - скорости не линуксовые и не виндовые. Может быть это проблема из-за контроллера Virtio SCSI?

В остальном работает великолепно. На максимальных настройках фпс 40+ (в зависимости от локаций в игре). Игра World of tanks . Впринцепи, ничего не изменилось, как если бы прямо из винды и запускал (я записал фпс в своё время, что бы потом сравнить)

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

у меня synergy работает норм, не в курсе.

Virtio SCSI?

так лучше virtio нет ничего, у меня нормально работает, но у меня не требующие особо диска задачи: графические и видеопакеты.

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

У тебя сервер synergy на госте? И в полноэкранных приложениях ты, упираясь в край экрана можешь вертеть камеру на 360 градусов (как во всяких баттлфилдах, танках и прочих экшенах)? Есть возможность конфиг synergy сервера скинуть?

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

У тебя сервер synergy на госте?

Нет конечно, всегда на хосте.

И в полноэкранных приложениях ты, упираясь в край экрана можешь вертеть камеру на 360 градусов (как во всяких баттлфилдах, танках и прочих экшенах)?

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

Есть возможность конфиг synergy сервера скинуть?

Конфига нет, дефолт с добавленной машиной гостя, больше никаких настроек, только название и расположение гостя.

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

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

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

Я такую проблему с synergy решил внезапно, случайно добавив к виртуалке видеовыход QXL (добавился вместе с клаво/мышью, когда я добавил «Дисплей SPICE» в virt-manager). В итоге появляется пустое окно qemu, а загрузка гостя отображается на проброшенной видюхе. При этом чтобы передать устройства гостю, я тыкаю мышью в это окно, а чтобы вернуть хосту — ctrl+alt. В итоге synergy оказался мне не нужен.

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

Спасибо. У меня гость с бсодом вылетает с qxl. В конечном итоге я решил проблему проще: в качестве сервера synergy выступает винда. Некоторые клавиши, нужные в обоих системах я забиндил. Сам synergy - ночная сборка 1.8.5, скачанная с их сайта. Так вроде заработало. Проблему со звуком решил так:

QEMU_AUDIO_DRV=alsa QEMU_ALSA_DAC_BUFFER_SIZE=4096 QEMU_ALSA_DAC_PERIOD_SIZE=256 taskset -c 2-5 qemu-system-x86_64 \ 
Изначально планировал пульсу удалить, но как то тяжко без неё в cinnamon'e я не нашел, а творить костыли было лень.

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