LINUX.ORG.RU
ФорумAdmin

Xen: Проблемы с Radeon Passthough

 , ,


0

4

Уже недели 2 пытаюсь пробросить видюху в виртуалку - без результатно.

Пробрасываю Radeon 7750 на Intel DH77DF + i7 3770s. В биосе виртуализация включена. Система Debian.

Пробовал xen 4.1.3 (последняя доступная в дистрибутиве Debian). При подключении PCI устройств вылезает “Error: (22, 'Invalid argument')” победить которую не смог. В том числе заливкой питоновских скриптов из 4.1.4.

Поставил 4.3.0-3+b1. При использовании xm выводит Error: 'NoneType' object has no attribute 'rfind'. В Интернете нашел два решения - переход на xl и установка xen-qemu-dm-4.0. Пакета в дистрибутиве не нашел, перешел на xl.

В xl виртуалка стартует. Даже с пробросом PCI устройств. Но в виртуалке семерка падает на загрузке. XP стартует, но на экран ничего вывести не может. При установке драйверов, долго пытается определить видюху. Не дождался.

В гостевом дебиане во время загрузки получаю такие логи

[    2.876513] [drm] radeon kernel modesetting enabled.
[    2.888359] radeon 0000:01:00.0: enabling device (0000 -> 0003)
[    2.888546] xen:events: xen_bind_pirq_gsi_to_irq: returning irq 49 for gsi 16
[    2.888550] radeon 0000:01:00.0: Xen PCI mapped GSI16 to IRQ49
[    2.888867] [drm] initializing kernel modesetting (VERDE 0x1002:0x683F 0x1043:0x0427).
[    2.888910] [drm] register mmio base: 0xF7D00000
[    2.888911] [drm] register mmio size: 262144
[    2.888927] radeon 0000:01:00.0: BAR 6: can't assign [??? 0x00000000 flags 0x0] (bogus alignment)
[    2.888936] radeon 0000:01:00.0: BAR 6: can't assign [??? 0x00000000 flags 0x0] (bogus alignment)
[    2.888937] [drm:radeon_get_bios] *ERROR* Unable to locate a BIOS ROM
[    2.888975] radeon 0000:01:00.0: Fatal error during GPU init
[    2.889003] [drm] radeon: finishing device.
[    2.889004] [TTM] Memory type 2 has not been initialized
[    2.896279] radeon: probe of 0000:01:00.0 failed with error -22

Что пробовал.
1. Ядра 3.2.0-4, 3.13.1, 3.13.5 2. Использовал статическое (вкомпилировав в ядро) и динамическое ( http://wiki.xen.org/wiki/Xen_PCI_Passthrough#Dynamic_assignment_with_sysfs) высвобождение PCI устройств. В обоих случая получал

root@vmhost:/etc/xen# xl pci-assignable-list
0000:00:02.0
0000:00:14.0
0000:00:1a.0
0000:00:1b.0
0000:00:1d.0
0000:01:00.0
0000:01:00.1

3. Пробовал использовать гипервизор 4.3.2 (собрав из исходников и заменив /boot/xen-4.3-amd64.gz)
4. Устанавливал jessie с нуля вместе с 4.3
5. Использовал две разных видюхи (обе Radeon 7750)

вот типовой конфиг виртуалки:

name = 'xbmc'

vcpus = 4

memory = 4096

disk = [
         '/dev/vm-storage-mirrored/xbmc,raw,xvda,rw',
         '/var/xen/debian-testing-amd64-netinst.iso,raw,xvdb,cdrom'
       ]
vif = [ 'mac=00:16:3e:17:9e:ea,bridge=br0' ]

#pci = [ '00:02.0', '00:1b.0', '00:1a.0' ]
pci = [ '01:00.0', '01:00.1', '00:1a.0' ]
pci_permissive = 1
pci_msitranslate = 1
xen_platform_pci = 1
gfx_passthru = 1
nographic = 1

on_poweroff = 'destroy'
on_reboot   = 'restart'
#on_crash    = 'restart'

builder = 'generic' # 'generic' for PV or 'hvm'
###### Paravirtualised #########
bootloader = '/usr/lib/xen-4.3/bin/pygrub'
#bootargs='--kernel=/vmlinuz --ramdisk=/initrd.img'

#kernel = '/var/xen/domains/xbmc/vmlinuz'
#ramdisk = '/var/xen/domains/xbmc/initrd.gz'

#kernel = '/boot/vmlinuz-3.13.5'
#ramdisk = '/boot/initrd.img-3.13.5'

#extra = 'debian-installer/exit/always_halt=true -- console=hvc0'


# Necessary for booting as of 12-06-2013
device_model_version = 'qemu-xen'
device_model_override = '/usr/bin/qemu'

vfb = [ 'type=vnc,vnclisten=0.0.0.0,vncdisplay=15' ]

###### Fully-virtualised #######
bios = 'seabios'
boot = 'c'
pae = 1
acpi = 1
apic = 1
hpet = 0

stdvga = 0
vnc = 1
vnclisten = '0.0.0.0'
vncdisplay = 15

usbdevice = 'tablet'

Как заставить видюху нормально заработать в виртуалке? Читаю в интернет - у народ радеоны нормально заводятся. У меня же с ни с какими бубнами заводиться не хочет.

Сейчас просматривал еще раз логи. Встретил непонятку Snoop Control и DMA Passthrough выключены. Может быть из-за этого дело. В доке пишут, что на старых версиях xen надо добавлять строку iommu=1. Добавил - ничего не изменилось.
Вывод после добавления ниже.
Как победить - пока не ясно

root@vmhost:~# xl dmesg | grep -i iommu -a2
(XEN) Latest ChangeSet: 
(XEN) Bootloader: GRUB 1.99-27+deb7u2
(XEN) Command line: placeholder iommu=1
(XEN) Video information:
(XEN)  VGA is text mode 80x25, font 8x16
--
(XEN) Initing memory sharing.
(XEN) xstate_init: using cntxt_size: 0x340 and states: 0x7
(XEN) Intel VT-d iommu 0 supported page sizes: 4kB.
(XEN) Intel VT-d iommu 1 supported page sizes: 4kB.
(XEN) Intel VT-d Snoop Control not enabled.
(XEN) Intel VT-d Dom0 DMA Passthrough not enabled.
egusev ()

похоже, что дурит vga arbiter, не включает маппинг vga с радеона по известным адресам.

попробуй отключить вторую видюху и настраивать с сериала.

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

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

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

поставь радеон основной, а встроенную отключи.

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

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

Пофиг. Включение-выключение ничего не дает.

В интернете при очередной попытке нашел возможную причину:

device_model_version = 'qemu-xen-traditional' The reason is that the new qemu-xen (qemu upstream) still doesn't support VGA passthrough.

Только при этой модели получаю такие ошибки libxl: error: libxl_dm.c:1275:device_model_spawn_outcome: domain 2 device model: spawn failed (rc=-3) libxl: error: libxl_create.c:1075:domcreate_devmodel_started: device model did not start: -3 libxl: error: libxl_dm.c:1306:libxl__destroy_device_model: Device Model already exited

egusev ()

1) Попробуйте KVM.

2) Попробуйте pci-stub, если радеон вторая карта.

3) У Вас биос/линукс радеон драйвер инициализирует карту. Потом стартует виндовс и находит карту в непонятном состоянии. Как делаю я:

echo "1002 6719" > /sys/bus/pci/drivers/vfio-pci/new_id 
echo "0000:02:00.0"  > /sys/bus/pci/devices/0000\:02\:00.0/driver/unbind 
echo "0000:02:00.0"  > /sys/bus/pci/drivers/vfio-pci/bind 

Потом suspend(S3)/resume и радеон драйвер не изменяет регистры. Виндовс драйвер видит неинициаизированную карту и инициализирует её.

Пробрасываются 5450 и 6950.

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

KVM посмотрел по диагонали, pci passthrough за вечер запустить не смог. Не понравилась сама идеалогия - запустить гую и начать конфигурить виртуалку мышкой. Внятного описания XML конфига не нашел. копировать виртуалку и менять - тоже какой-то костыль.

с XEN разобрался - в дебиане модифицированный XEN, поэтому PCI passthrough пока не работает собрал из исходников, сделал deb, установил - заработало. запустилось сразу. больше время потерял на сборку deb.

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