LINUX.ORG.RU

Зависает ядро при попытке проброса Nvidia 210

 , , , ,


2

2

Пытаюсь пробросить Nvidia G210 в qemu-kvm=linux/windows как через vfio, так и через pci-assign — и не получается нормально, получается либо полупроброс, либо линукс намертво зависает.

1. vfio:

${QEMU} \
    -enable-kvm -M q35 -m 4096 \
    -smp 4,sockets=1,cores=4,threads=1 \
    -cpu host,hv_relaxed,hv_vapic,hv_spinlocks=0x1000 \
    -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,romfile=GT218.rom,x-vga=on \
    -device vfio-pci,host=01:00.1,bus=root.1,addr=00.1 \
    -bios /usr/share/seabios/bios.bin \
    -boot menu=on -vga none \
    -cdrom /mnt/vm/images/arch.iso \

Что на q35, что на pc (pc-i440fx-2.0, pc-i440fx-2.5), при "-vga none" — линукс сразу зависает, только хардресет. Если убрать none, то включается, в окошке начинается загрузка (убунта, федора, арч, винда), в случае убунты даже включается монитор подключенный к пробрасываемой видеокарте, показывается графика, окно убунты «Try it / Install», но после нажатия Try — пропадает всё, черный экран. В случае федоры на пробрасываемом карте-мониторе только бут-процесс федоры, а потом обратно перекидывает в окно qemu.

Также можно подсунуть видобиос от неё, но делу это не помогает.

     -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,romfile=GT218.rom,x-vga=on \
В общем, получается какой-то полупроброс здесь, хотя очевидно карта пробрасывается нормально, через неё показывает и работает, но только временно. Чего линукс зависает-то на -vga none?

2. pci-assign:

pci-assign не работает, еще 2 года назад автор vfio говорил, что он deprecated (хотя у меня и у многих работало, например на radeon 7870), вот такая ошибка, что не пробрасывай включая эту карту — машина не стартует:

qemu-system-x86_64: -device pci-assign,host=02:06.0: Failed to assign device "(null)": Invalid argument

pci-assign это добавление устройств в pci-stub при загрузке ядра, например:

CONFIG_CMDLINE="pci-stub.ids=10de:0a60,10de:0be3,13f6:0111"
и в машине:
    -device pci-assign,host=01:00.1 \
    -device pci-assign,host=01:00.0 \

В чём может быть дело? Кто сталкивался с зависающим ядром при пробросе на -vga none?

t184256, Deathstalker — вот вы говорили, что смогли пробросить Nvidia 210, не сохранилось ли у вас подробностей? Какая здесь еще нужна дополнительная магия?



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

VFIO
-bios /usr/share/seabios/bios.bin

эээ... ты серьезно?

Не сохранилось по причине отсутствия. VFIO, romfile не указывал, Ubuntu весело жрала проброшенную видюху и горя не знала.

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

qemu-system-x86_64-enable-kvm \
    -nodefaults \
    -M q35 -m 4096 \
    -device vfio-pci,host=01:00.0,multifunction=on,x-vga=on \
    -device vfio-pci,host=01:00.1 \
    <укажи ему юзать свеженький OVMF> \
    -vga none \
    -cdrom /mnt/vm/images/arch.iso
у тебя все еще то же самое «жесткое зависание» без предупреждений в логах. Там дальше посмотрим.

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

Да, ёдрон-батон, арч загружается на проброшенной карте через ovmf:

    -drive if=pflash,format=raw,readonly,file=/mnt/vm/OVMF/OVMF-pure-efi.fd \
    -drive if=pflash,format=raw,file=/mnt/vm/OVMF/OVMF_VARS-pure-efi.fd \

Продолжаем исследования.

Вообще-то, я — зубы съел на ovmf и являюсь самым активным и крупным популяризатором OVMF на постсоветском пространстве, рекомендуя его всем и вся где нужно и где не нужно. Пробрасывал на GTX750-Ti и R9 270X.

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

Потом еще раз перечитал пост Алекса Вилльямсона из редхата (разраб vfio): Does my graphics card ROM support EFI? и подтвердил догадки-воспоминания, что ovmf работает только если в видеокарте с EFI-видеобиосом:

If you don't have EFI support in the ROM, the OVMF solution will not work for you.
, как это проверить он говорит в посте. Естественно, что карта вышедшая в 2009 году не имеет EFI-видеобисоа, поэтому я сразу прекратил попытки его использовать.

А получается, что не совсем так, так-то.

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

Также можно подсунуть видобиос от неё, но делу это не помогает.

Насколько я помню то что ты можешь прочитать из rom не обязательно является полноценным биосом. Вероятно чтобы достать полноценный тебе нужно взять nvagetbios из envytools и выковыривать его им.

Естественно, что карта вышедшая в 2009 году не имеет EFI-видеобисоа, поэтому я сразу прекратил попытки его использовать.

На самом деле смешное дело, но есть некоторый шанс что для твое карты можно скрафтить поддержку EFI. Ну как минимум в этом топике есть GOP для GT21x (твоя карта GT218):

http://www.win-raid.com/t892f16-AMD-and-Nvidia-GOP-update-No-requests-DIY.html

Хотя странно что именно эти карты поддерживаются, но попробовать стоит т.к прошивать карту тебе не надо. Инфа найдена здесь: https://www.redhat.com/archives/vfio-users/2016-March/msg00138.html

o-
()
Ответ на: комментарий от kep

Да, ёдрон-батон, арч загружается на проброшенной карте через ovmf

У меня самого похожая ситуация с GTX 260. Хочу заставить её работать с EFI каким угодно методом, т.к без VGA arbiter патча она с биосом не пробрасывается (ошибка KVM вылетает при использовании VFIO).

При этом пока у меня хост был с Legacy boot я успешно запускал виртуалку с убунтой и хоть экрана загрузки естественно не было Nouveau после как-то умудрялся её инициализировать. Но даже тогда в винде работать она отказывалась если активироват через менеджер устройств.

Если найдешь как сделать чтобы это работало в винде буду мегаблагодарен.

o-
()

Пока что рассматриваю один интересный вариант который может прокатить. Запустить виртуалку без дискретки с BIOS, а потом уже когда винда запустится подключать на горячую через device_add vfio-pci,host=02:00.0

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

Да кстати, прокатило так на венде и драйвер репортит что карта работает. Но выходы не видит, а DRI_PRIME=1 на венде нет (в удобном виде как минимум) чтобы проверить.

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

Спасибо, будет чем сегодня заняться. Сейчас понюхаем, что за GOP.

У меня ситуация такова: федора и арч (при -vga none) при буте включают карту и изображение с неё, виден процесс загрузки и в случае федоры заходит в гуи, где всё работает, картинка есть, можно пользоваться через монитор подключенный к пробрасываемой карте.

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

Также, не получается вообще посмотреть bios/ovmf/UEFI-bootmenu через монитор с той карты.

VGA-arb патч я думал нужен только в случае, если на хосте интел видео, сейчас почитаю, может он нужен и мне (у меня amd).

Спасибо за информацию. Отпишу результат.

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

Также, не получается вообще посмотреть bios/ovmf/UEFI-bootmenu через монитор с той карты.

Если не найдешь как-то сделать для неё rom с GOP, то никогда и не сможешь даже если карта заработает в ОС.

VGA-arb патч я думал нужен только в случае, если на хосте интел видео

Да это так, но собственно пишу о том с чем у меня лично проблемы и почему оно не работает.

Че за федора кстати у тебя? Может в убунте просто nouveau старее и поэтому не работает.

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

Убунта как раз свежайшая, daily build. Федора же просто скачанная с сайта, текущая предлагаемая.

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

http://www.win-raid.com/t892f16-AMD-and-Nvidia-GOP-update-No-requests-DIY.html

Однако творит чудеса! Спасибо, o-! Запилил себе из non-EFI — UEFI-биос для неё, теперь видно и загрузку, и винду и убунту, всё работает ок, но пока только на линуксах, винда хоть и загружается на проброшенном мониторе, но после установки драйвера ничего не происходит, говорит вроде как проблема с карточкой. Но это я пока не перепрошивал саму железную карту, а просто подставляю romfile:

    -device vfio-pci,host=01:00.0,multifunction=on,romfile=/mnt/vm/img/GT218_updGOP.rom,x-vga=on \

У меня самого похожая ситуация с GTX 260

Так возьми биос с неё через виндовый GPU-Z и опубликуй в том треде, тот чел посмотрит на него и подумает, что делать, это ведь не просьба запилить модифицированный (что делается всего лишь одним движением: натравливанием на его батник ромфайла, который получен через GPU-Z), а запилить поддержку в его утилите, он ведь сам ждёт, насколько я понял, что люди будут прикладывать свои файлы. Если я правильно понял (пробежался по всем 16 страницам треда).

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

Теперь работает и винда, ура! Проблема была в том, что я устанавливал самый свежий драйвер, а они скорее всего там как и ранее — делают препятствия для установки в виртмашине, поставил шедший с диском драйвер 310.70 — и вуаля, всё ок, разрешение нативное.

Кому может быть полезно и интересно: вот оригинальный видеобиос, вот модифицированный видеобиос с UEFI для Nvidia G210 (чип GT218), а вот ссылка на драйвер 310.70.

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

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

Проблема была в том, что я устанавливал самый свежий драйвер, а они скорее всего там как и ранее — делают препятствия для установки в виртмашине, поставил шедший с диском драйвер 310.70 — и вуаля, всё ок, разрешение нативное.

Тебе нужно две опции: kvm=off и hv_vendor_id=fucknvidia и тогда последние драйвера будут работать. При это можно использовать все опции виртуализации Hyper-V без проблем.

o-
()
Ответ на: комментарий от kep

Так возьми биос с неё через виндовый GPU-Z

Пока проблема упирается в то, что у меня нет на хосте венды и я вообще нигде не могу инициализировать карту. Envytools ругается на «PCI init failure!», а GPU-z в венде не может никакой информации получить о карте. :-(

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

Сейчас смог забутать livecd кубунты с обоими моими картами и GTX 260 там как ни странно работала (естественно уже после загрузки). Смог сдампать биос и он оказался идентичен тому что уже выложен в инете тут:

https://www.techpowerup.com/vgabios/17624/asus-gtx260-896-080610

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

Короче я осилил это сделать:

  • Используем для виртуалки чипсет поддерживающий хотплаг PCIe.
  • Далее как угодно бутаем виртуалку с нерабочей видеокартой и ставим на неё драйвера. Они должны быть.
  • Теперь бутаем виртуалку с UEFI и qxl-vga
  • Когда оффтопик загрузился и залогинилось добавляем видеокарту:
    device_add vfio-pci,host=02:00.0,id=gpu
  • После этого надо ещё включить монитор в оффтопике и опционально вырубить QXL.

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

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

Такс апдейт: можно бутать виртуалку вообще без видео, а потом подключать через device_add и грузит сразу экран логина. Самое забавное, что если её сразу включить с видеокартой то не работает, а так - легко.

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

kvm=off

да как-то смущает :) В общем-то плевать, версия дров вышла кажется 2011-2012, вряд ли они допиливали их для карточки, вышедшей в 2009 году. Работает отлично, не могу нарадоваться.

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

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

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

Ясно, ну ок, попробуем, еще раз спасибо.

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

Предлагаю убедить меня, что ты загрузился с EFI

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

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

В общем случае нет, но в этом случае вариант «лучше не выпендриваться» — как раз вариант с efi и ovmf.

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

А для проброса любой видюхи нужно EFI, или это специфика Nvidia?

Это во многом специфика Intel на хосте и отсутствия в их драйвере поддержки VGA арбитрации, хотя сама VGA арбитрация это реально адовый костыль:

https://www.kernel.org/doc/Documentation/vgaarbiter.txt

В EFI этих костылей нет и это прекрасно.

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