Blacklist в Nvidia gpu for qemu/kvm passthrough

I am trying to run Windows in в виртуальный machine while giving the VM в direct passthrough to the GPU for better выступление.

I have an integrated intel GPU (I will использовал this one for the host) and в Nvidia GTX980 (I want this one for the VM). I использовал Elementary OS 0.3.2 Freya 64 бит.

I have followed this guide but am now stuck at step 2. I cannot get the Nvidia gpu to be blacklisted.

To start with I do lspci -nn | grep NVIDIA

This results in the following output

01:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:13c0] (rev a1)
01:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:0fbb] (rev a1)

Next I added this line to the /etc/initramfs-tools/modules file.

pci_stub ids=10de:13c0,10de:0fbb

And I then reloaded using update-initramfs -u and afterwards rebooted.

After the reboot when I run dmesg | grep pci-stub I get the following output:

[    2.029626] pci-stub: add 10DE:13C0 sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000
[    2.029630] pci-stub: add 10DE:0FBB sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000
[    2.029637] pci-stub 0000:01:00.1: claimed by stub

Эксперт you хан see neither the аудио or видео пахал claimed by stub.

I have also tried adding this option directly to the grub file in etc/default/grub so the GRUB_CMDLINE_LINUX_DEFAULT line looks like this:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on pci-stub.ids=10de:13c0,10de:0fbb"

But this also resulted in the Nvidia card not being blacklisted.

Anyone got any разрабатывает what might be causing this?

5
задан 10 January 2016 в 03:49

5 ответов

Я настраиваю qemu-kvm передачу также, и у меня была та же проблема как Вы. Я использую свою интегрированную видеокарту Intel в качестве моего основного gpu, таким образом, я открыл настройки Nvidia и отключил гибридную графику, таким образом, карта Nvidia не будет использоваться: (рис. имел отношение)

После этого у меня не было проблемы при привязке карты с vfio-pci.

возможно, что так или иначе модули Nvidia вызовут Вас проблема при запуске qemu, или что у Вас нет опции выключить гибридную графику. Если это верно, можно также попробовать то, что я также сделал и вручную отключаю модули Nvidia с помощью сценария как этот от консольного режима (CTRL+ALT+F1):

#!/bin/bash
sudo service lightdm stop
sudo rmmod nvidia_uvm
sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia
sudo service lightdm start

Это останавливает менеджера по оформлению (в моем случае lightdm), отключает модули Nvidia в порядке и перезапускает менеджера по оформлению впоследствии. Удостоверьтесь, что запустили это в консольном режиме, как выполняющий это от рабочего стола, скорее всего, прервет сценарий после первой строки.

модули Nvidia автоматически загрузятся снова, когда Вы перезагрузите, но можно также загрузить их снова вручную:

modprobe nvidia nvidia_modeset nvidia_drm nvidia_uvm

Hope это помогает.

2
ответ дан 23 November 2019 в 10:27

Вы судили это руководство https://forum.level1techs.com/t/play-games-in-windows-on-linux-pci-passthrough-quick-guide/108981?:) Это является вполне более новым :)

0
ответ дан 23 November 2019 в 10:27

Ваше аудио требуется тупиком

[    2.029637] pci-stub 0000:01:00.1: claimed by stub

, видео не. У меня есть та же проблема, я поместил в черный список Nvidia и/или Nouveau. Я использую сервер Ubuntu 15.10 так не точно то же, но у меня есть та же проблема. Я искал межсеть в течение многих недель теперь и ничего.

редактирование Наконец зафиксировало его, я нашел его здесь: https://forum.level1techs.com/t/pci-stub-not-claming-secondary-graphics-card/88728

, Таким образом, я поместил в черный список модули Nvidia и Nouveau и перезагрузил. Надежда это помогает

редактирование снова:

Мои текущие шаги, которые я сделал для привязки плат PCI с тупиком PCI на дуге с ядром 4.10.1-1.

я отредактировал/etc/default/grub к, похож на этот GRUB_CMDLINE_LINUX_DEFAULT =, "подавляют шумы intel_iommu=on pci-stub.ids=1002:6798,1002:679a, 1002:aaa0,1106:3483",

Затем я создаю новый файл конфигурации личинки

$ sudo-o/boot/grub/grub.cfg

личинки-mkconfig Затем перезагрузка.

В/etc/mkinitcpio.conf я добавил тупик PCI к Модулям так, чтобы он был похож: МОДУЛИ = "тупик PCI"

затем работают

$ sudo mkinitcpio-P

для восстановления всех изображений initramfs. Затем перезагрузка.

Затем эта команда только, чтобы удостовериться, что они требовались личинкой PCI

$ dmesg | grep тупик PCI

0
ответ дан 23 November 2019 в 10:27

Я столкнулся с подобными проблемами как Вы (Lubuntu 16.04). Это наступает к драйверам/модулям, связывающим устройства с ними, прежде чем тупик PCI сможет сделать это. У Вас есть по крайней мере две опции в здесь:

Первый и самый легкий должен был бы поместить в черный список модули, которые требуют устройства. Ввести lspci -knn | grep VGA -A 5 видеть все Ваши устройства PCI VGA и их номер устройства и их модули ядра.

01:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:128b] (rev a1)
    Subsystem: Micro-Star International Co., Ltd. [MSI] Device [1462:8c93]
    Kernel driver in use: nouveau
    Kernel modules: nvidiafb, nouveau
01:00.1 Audio device [0403]: NVIDIA Corporation GK208 HDMI/DP Audio Controller [10de:0e0f] (rev a1)
    Subsystem: Micro-Star International Co., Ltd. [MSI] GK208 HDMI/DP Audio Controller [1462:8c93]
--
02:00.0 VGA compatible controller [0300]: NVIDIA Corporation GM204 [GeForce GTX 970] [10de:13c2] (rev a1)
    Subsystem: ZOTAC International (MCO) Ltd. GM204 [GeForce GTX 970] [19da:1366]
    Kernel driver in use: nouveau
    Kernel modules: nvidiafb, nouveau
02:00.1 Audio device [0403]: NVIDIA Corporation GM204 High Definition Audio Controller [10de:0fbb] (rev a1)
    Subsystem: ZOTAC International (MCO) Ltd. GM204 High Definition Audio Controller [19da:1366]

Теперь необходимо проверить, какой драйвер используется. Например, nouveau захватил мое устройство VGA 02:00.0, который я хочу использовать для своего VM, таким образом, я помещаю в черный список тот в:

нано sudo/etc/modprobe.d/blacklist.conf blacklist nouveau

и Ваш сделаны.

В моем случае это вызвало бы проблему, так как у меня есть две Nvidia, VGA установил (01:00.0 и 02:00.0) оба выполнения с тем же драйвером. В моем случае я не помещаю в черный список драйвер.

Я действительно вручную развязываю nouveau от своей 02:00.0 Видеокарты VGA, так как я хотел использовать ту карту для своего VM-гостя и 01:00.0 VGA для моего хоста Linux. Благодаря этому руководству я узнал, как сделать так: https://lwn.net/Articles/143397/

Ввести sudo tree /sys/bus/pci/drivers/nouveau. Exchange nouveau с любым модулем захватил Ваше устройство.

Необходимо получить список как это:

/sys/bus/pci/drivers/nouveau
├── 0000:01:00.0 -> ../../../../devices/pci0000:00/0000:00:03.0/0000:01:00.0
├── 0000:02:00.0 -> ../../../../devices/pci0000:00/0000:00:05.0/0000:02:00.0
├── bind
├── module -> ../../../../module/drm
├── new_id
├── remove_id
├── uevent
└── unbind

Мы видим, что драйвер nouveau имеет к привязке устройств к нему: 0000:01:00.0 и 0000:02:00.0

Чтобы развязать и связать мою видеокарту, я сначала должен выключить lightdm.service. Для этого я открываю консоль за пределами настольной среды с CTRL+ALT+F2, например. Вход в систему как корень и тип systemctl stop lightdm.service

Теперь я могу развязать модуль с видеокарты:

echo -n "0000:02:00.0" > /sys/bus/pci/drivers/nouveau/unbind

и свяжите его с любым модулем, который я хочу (тупик PCI или vfio-pci). Я использовал vfio-pci.

echo -n "0000:02:00.0" > /sys/bus/pci/drivers/vfio-pci/bind

После этого можно запустить desktopmanager снова: systemctl start lightdm.service

Если бы все работало, то необходимо найти устройство связанным с модулем Вы указанный путем поиска с lspci -knn | grep VGA -A 5 снова.

01:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:128b] (rev a1)
    Subsystem: Micro-Star International Co., Ltd. [MSI] Device [1462:8c93]
    Kernel driver in use: nouveau
    Kernel modules: nvidiafb, nouveau
01:00.1 Audio device [0403]: NVIDIA Corporation GK208 HDMI/DP Audio Controller [10de:0e0f] (rev a1)
    Subsystem: Micro-Star International Co., Ltd. [MSI] GK208 HDMI/DP Audio Controller [1462:8c93]
--
02:00.0 VGA compatible controller [0300]: NVIDIA Corporation GM204 [GeForce GTX 970] [10de:13c2] (rev a1)
    Subsystem: ZOTAC International (MCO) Ltd. GM204 [GeForce GTX 970] [19da:1366]
    Kernel driver in use: vfio-pci
    Kernel modules: nvidiafb, nouveau
02:00.1 Audio device [0403]: NVIDIA Corporation GM204 High Definition Audio Controller [10de:0fbb] (rev a1)
    Subsystem: ZOTAC International (MCO) Ltd. GM204 High Definition Audio Controller [19da:1366]

К сожалению, это обходное решение теряет эффект после перезагрузки. Все же я не узнал о том, как сделать это персистентным. Возможно, кто-либо еще может дать мне подсказку. Что-то как startscript было бы возможно, я предполагаю. Но это лучше было бы в состоянии связать устройство с определенным модулем, не имея необходимость развязывать его сначала. Предположите, что я хотел бы использовать драйвер Nvidia однажды. В этом случае развязывание от nouveau было бы бесполезно, так как видеокарта будет, связывают с модулем Nvidia.

1
ответ дан 23 November 2019 в 10:27

Деактивируйте nvidia/nuveau, использующий конфигурацию личинки.

Существует возможность передать module_blacklist=<module1>[,<module2>] (документация) директива к ядру через grub2 командную строку. я смог деактивировать nuveau и драйвер Nvidia со следующим дополнением к GRUB_CMDLINE_LINUX_DEFAULT в /etc/default/grub (не забывайте выходить sudo update-grub):

module_blacklist=nvidia,nvidia_uvm,nvidia_drm,nvidia_modeset,nouveau

Существует также возможность автоматически генерировать записи личинки с и без этой опции для каждого ядра: https://unix.stackexchange.com/questions/24670/choose-at-grub-menu-whether-nvidia-driver-should-be-used (первый ответ). Но это оказалось более громоздким, чем ожидалось. Конфигурация личинки человечности очень сложна. Удостоверьтесь, что сделали резервное копирование перед переделыванием его.

Это особенно полезно, если Вы хотите использовать мощную карту NVIDIA для игр в виртуальной машине с помощью Передачи VGA, все же имейте опцию использовать его для глубокого обучения, такой как tensorflow. Только перезагрузка, требуемая переключаться между теми двумя.

0
ответ дан 23 November 2019 в 10:27

Другие вопросы по тегам:

Похожие вопросы: