1 votes

kvm, pci passthrough : impossible de détacher la carte nvidia pour les noyaux 5.4 et plus

Normalement, lors de l'utilisation de pci passthrough, le pilote nvidia est remplacé par le pilote vfio. La configuration de l'option correcte dans /etc/modprobe.d/vfio.conf y parvient. Avec le noyau 5.4, le pilote vfio n'est pas chargé à la place du pilote nvidia natif. Je ne veux pas blacklister le pilote nvidia, puisque j'ai 2 cartes nvidia. Une seule est utilisée pour le passthrough. Je n'ai eu aucun problème avec les noyaux 5.3.0-19 et inférieurs.

Quelle est la manière correcte d'assigner le pilote vfio à l'une des cartes nvidia dans les nouveaux noyaux.

1voto

Owl Points 11

Je ne sais pas si vous avez résolu ce problème, mais ma configuration VFIO a également cessé de fonctionner après la mise à jour vers Kubuntu 20.04 avec le noyau 5.4. La solution était quelque chose que je n'avais jamais eu à faire auparavant, voici le lien vers la solution que j'ai utilisée. Au cas où le lien serait cassé à l'avenir, j'inclus l'information ci-dessous pour que les gens puissent la trouver.

https://github.com/rmayobre/PopOs-VFIO-Tutorial/wiki/VFIO-Steps

Étape 1 - Installer le logiciel requis

Vous aurez besoin de QEMU, Virt-Manager, ainsi que de quelques paquets. Exécutez cette ligne :

sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virt-manager ovmf

Étape 2 - Ajouter les paramètres du noyau requis

 sudo kernelstub -a 'intel_iommu=on'
    sudo kernelstub -a 'iommu=pt'
    sudo kernelstub -a 'iommu=1'
    sudo kernelstub -a "pci=noaer" Add this if you have problems with your VM starting when a USB Controller is attached.

Étape 3 - Rechercher les dispositifs PCI par ID

NOTE : assurez-vous de noter les identifiants (vous en aurez besoin plus tard). GPU et sortie audio

Exécutez la commande : lspci -vnn et recherchez le GPU que vous souhaitez passer à l'OS invité. La sortie audio de votre GPU devrait être en dessous. Votre sortie devrait ressembler à quelque chose comme ceci (bien sûr si vous utilisez une Radeon, il en sera autrement) :

09:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP104 [GeForce GTX 1070 Ti] [10de:1b82] (rev a1) (prog-if 00 [VGA

contrôleur]) 09:00.1 Périphérique audio [0403] : Contrôleur audio haute définition GP104 de NVIDIA Corporation [10de:10f0] (rev a1)

Rappelez-vous les chiffres qui se trouvent devant votre appareil (par exemple, 09:00.0 et 09:00.1). Étape 4 - Attacher les pilotes VFIO aux périphériques PCI

Nous devons lier les pilotes VFIO à notre GPU, ainsi qu'à notre GPU. contrôleur audio de notre GPU. Pour ce faire, nous allons créer un script pour nous aider à à attacher les pilotes VFIO aux périphériques PCI spécifiés. Créez ce fichier :

sudo nano /etc/initramfs-tools/scripts/init-top/bind_vfio.sh

Puis collez ce script à l'intérieur du fichier nouvellement créé :

#!/bin/sh
PREREQS=""
DEVS="0000:09:00.0 0000:09:00.1"
for DEV in $DEVS;
  do echo "vfio-pci" > /sys/bus/pci/devices/$DEV/driver_override
done

modprobe -i vfio-pci

Remplacez 0000:09:00.0 et 0000:09:00.1 par les numéros de votre GPU (NOTE : vous devez ajouter 0000 : au début de vos numéros). devez ajouter 0000 : au début de vos numéros). Ajoutez votre script sur le disque RAM initial

Cela peut être fait en rendant le script exécutable :

sudo chmod 755 /etc/initramfs-tools/scripts/init-top/bind_vfio.sh

Maintenant, ajoutez le script :

sudo chown root:root /etc/initramfs-tools/scripts/init-top/bind_vfio.sh

Enfin, mettez à jour le bélier initial :

sudo update-initramfs -u

Vous pouvez alors vérifier que le ramdisk initial contient bien le script. prêt en exécutant ceci(remplacez /boot/initrd.img-5.0.0-55-generic avec votre fichier) :

sudo lsinitramfs /boot/initrd.img-5.0.0-55-generic |grep vfio

Maintenant nous devons ajouter vfio-pci à ce fichier et sauvegarder :

sudo nano /etc/initramfs-tools/modules

Recommencez :

sudo update-initramfs -u

Redémarrez votre système. Quand il sera en ligne, exécutez ceci :

lspci -nnv 

Votre GPU devrait avoir le pilote du noyau dans us : vfio-pci (comme cette sortie) :

09:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP104 [GeForce GTX 1070 Ti] [10de:1b82] (rev a1) (prog-if 00 [VGA

contrôleur]) Sous-système : Micro-Star International Co., Ltd. [MSI] GP104 [GeForce GTX 1070 Ti] [1462:330f] Drapeaux : maître du bus, devsel rapide, latence 0, IRQ 70, noeud NUMA 0 Mémoire à b0000000 (32 bits, non préemptable) [size=16M] Mémoire à 90000000 (64-bit, prefetchable) [size=256M] Mémoire au niveau de a0000000 (64-bit, prefetchable) [size=32M] Ports d'E/S à 3000 [size=128] ROM d'extension à b1000000 [désactivé] [size=512K] Capacités : Pilote de noyau utilisé : vfio-pci Modules du noyau : nvidiafb, nouveau, nvidia_drm, nvidia

09:00.1 Audio device [0403]: NVIDIA Corporation GP104 High Definition Audio Controller [10de:10f0] (rev a1)
  Subsystem: Micro-Star International Co., Ltd. [MSI] GP104 High Definition Audio Controller [1462:330f]
  Flags: bus master, fast devsel, latency 0, IRQ 71, NUMA node 0
  Memory at b1080000 (32-bit, non-prefetchable) [size=16K]
  Capabilities: <access denied>
  Kernel driver in use: vfio-pci
  Kernel modules: snd_hda_intel

Étape 5 - Terminé

Si vous êtes arrivé jusqu'ici, vous avez terminé de configurer le VFIO. . Vous pouvez maintenant passer à la section concernant la configuration des machines machines virtuelles et Virt-Manager. Pages 5 VFIO et GPU Passthrough

Home
Hardware Configurations
VFIO Attachment
Virtual Machine Configurations
Windows 10 Install

Cloner ce wiki localement

0voto

iivel Points 231

J'ai résolu le problème comme suit : tout ce que j'ai eu à faire est de réassigner le pci AVANT le démarrage de X11. C'était X11 et non le pilote nvidia qui bloquait l'assignation du pci. J'ai ce qui suit dans mon rc.local :

/usr/bin/virsh nodedev-detach pci_0000_17_00_0
echo "vfio-pci" > "/sys/bus/pci/devices/0000:17:00.3/driver_override"

Mon plus gros problème était le module "nvidia-gpu" qui n'est pas utilisé pour les graphiques. Il était utilisé dans le bus pci 17:00.3. J'ai dû blacklister ce module du noyau également. Cela n'a pas blacklisté le module graphique nvidia.

0voto

RuThaN Points 1

Vérifiez-le s'il vous plaît, quelqu'un l'a résolu avec :

mkinitcipio -P linux-vfio and vfio kernel.

Solution originale

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X