LINUX.ORG.RU

Не могу «пробросить» звуковуху в виртуалку

 , ,


0

3

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

Вот история моих действий с выхлоп lspci -knn после каждого шага: 0. использую ее в линуксе

> lspci -knn | grep -a1 -i xonar                                ~
04:06.0 Multimedia audio controller [0401]: C-Media Electronics Inc CMI8788 [Oxygen HD Audio] [13f6:8788]
	Subsystem: ASUSTeK Computer Inc. Virtuoso 66 (Xonar DS) [1043:838e]
	Kernel driver in use: snd_virtuoso
1. затем делаю
# pwd
/sys/bus/pci/devices/0000:04:06.0/driver
# echo '0000:04:06.0' > unbind

Все. Эмулятор терминала виснет намертво.
 lspci -knn | grep -a1 -i xonar                                ~
04:06.0 Multimedia audio controller [0401]: C-Media Electronics Inc CMI8788 [Oxygen HD Audio] [13f6:8788]
	Subsystem: ASUSTeK Computer Inc. Virtuoso 66 (Xonar DS) [1043:838e]
	Kernel modules: snd_virtuoso
Т.е. как я понимаю этот шаг прошел «успешно» и девайс у меня разбиндился. В dmesg ничего нового.

3. Добавляю в vfio-pci

# pwd
/sys/bus/pci/drivers/vfio-pci
# echo 13f6 8788 > new_id
Все. Этот эмулятор терминала тоже зависает, а именно перестает реагировать на ввод (может я неправильно выразился).

Кстати, после этого в dmesg появляются такие вот страшные строки

https://gist.github.com/matrixd/647efe2dffd94ab48b807b70c9ee1d6b

Выхлоп lspci

 lspci -knn | grep -a1 -i xonar                                ~
04:06.0 Multimedia audio controller [0401]: C-Media Electronics Inc CMI8788 [Oxygen HD Audio] [13f6:8788]
	Subsystem: ASUSTeK Computer Inc. Virtuoso 66 (Xonar DS) [1043:838e]
	Kernel modules: snd_virtuoso

Проброс видяхи удается, но для нее в udev (емнип) правила написаны, чтобы она сразу биндилась на vfio-pci при буте.

Свежий арчик.

Мать Gigabyte 970A-DS3P

Помоги ЛОР, что я делаю не так?

При загрузке кстати огребаю вот такое.

1.122726] AMD-Vi: Event logged [IO_PAGE_FAULT device=02:00.0 domain=0x0010 address=0x00000000bec08880 flags=0x0010]



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

02:00.0 это усб

02:00.0 USB controller [0c03]: VIA Technologies, Inc. VL805 USB 3.0 Host Controller [1106:3483] (rev 01) (prog-if 30 [XHCI])
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:5007]
	Flags: fast devsel, IRQ 28, NUMA node 0
	Memory at fe300000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
	Capabilities: [90] MSI: Enable- Count=1/4 Maskable- 64bit+
	Capabilities: [c4] Express Endpoint, MSI 00
	Capabilities: [100] Advanced Error Reporting
	Kernel modules: xhci_pci
Так что наверное не должно мешать.

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

Я правильно понимаю, что это интегрированная звуковая карта?

Проброс видяхи удается, но для нее в udev (емнип) правила написаны, чтобы она сразу биндилась на vfio-pci при буте.

Это не важно. Все опенсорсные драйвера видеокарт поддерживают hotplug на свежих ядрах из-за того, что на ноутбуках это нужно т.к там дискретка карта уходит в D3 когда не используется. А вот ядерный модуль звуковой карты вполне может и не поддерживать.

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

Тогда попробуй вот что:

  • Если есть пульса правишь /etc/pulse/client.conf и ставишь там «autospawn = no»
  • Убиваешь пульсу.
    pulseaudio --kill
  • Далее выгружаешь альсу. На самом деле оно конечно и не выгрузится скорее всего, но теперь нормально сделает unbind нормально пока карточка не используется:
    sudo alsa unload
  • Теперь биндишь карту куда надо и запускаешь все опять:
    sudo alsa reload
    pulseaudio --start

Я так понимаю вполне можно сделать все это не убивая пульсу, но надо как-то заставить пульсу перестать использовать карточку (просто отключить через pavucontrol недостаточно).

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

Если есть пульса правишь /etc/pulse/client.conf и ставишь там «autospawn = no»

Не, нету

Далее выгружаешь альсу. На самом деле оно конечно и не выгрузится скорее всего, но теперь нормально сделает unbind нормально пока карточка не используется:

sudo alsa unload

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

Буду дома - попробую. Спасибо.

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

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

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

Далее выгружаешь альсу. На самом деле оно конечно и не выгрузится скорее всего, но теперь нормально сделает unbind нормально пока карточка не используется:

Попробовал alsactl kill quit от юзера и от рута, а затем шаг 1 (unbind) - не взлетело. tty опять зависает.

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

И оно похоже только как модуль ядра. Т.е. никаких тебе демонов. Попробую распутать цепочку зависимостей возможно...

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

Ну дык без прокладок типа пульсы это не прокатит, т.к модуль используется из юзерспейса и «чисто» ты его удалить не сможешь.

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

хм! А ведь да! Убил иксы и оно взлетело.

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