Comment activer le relais de périphérique KVM sous Linux?

13

J'ai une carte mère MSI-GD65 Gaming et un Intel i7 4790. VT-D est activé dans la section Fonctionnalités CPU du bios.

J'utilise Ubuntu 14.04.1 LTS et lorsque j'essaie de détacher un périphérique, j'obtiens le message suivant:

# virsh nodedev-detach pci_0000_00_1f_2

erreur: impossible de détacher le périphérique pci_0000_00_1f_2 erreur: opération non prise en charge: ni l'affectation de périphérique VFIO ni KVM n'est actuellement prise en charge sur ce système

Dmesg comprend des informations sur IOMMU mais je ne peux pas dire si cela signifie que VT-D est activé

$ dmesg | grep -i iommu

[0.027450] dmar: IOMMU 0: reg_base_addr fed90000 ver 1: 0 cap c0000020660462 ecap f0101a
[0.027455] dmar: IOMMU 1: reg_base_addr fed91000 ver 1: 0 cap d2008020660462 ecap f010da
[0.027521] IOHDIC I000HD

Quelqu'un peut-il indiquer ce que je dois faire pour activer VT-D sur ce système et transmettre des périphériques PCI aux invités KVM, s'il vous plaît?

Anonymouslemming
la source
avez-vous fait un cycle de puissance complet après avoir activé VT et VT-d?
dyasny

Réponses:

11

La solution à ce problème consiste à activer IOMMU dans vos paramètres de démarrage GRUB.

Vous pouvez le faire en définissant ce qui suit dans / etc / default / grub

GRUB_CMDLINE_LINUX_DEFAULT = "intel_iommu = on"

Si vous utilisez un processeur AMD, vous devez amd_iommu=onplutôt ajouter les paramètres de démarrage

GRUB_CMDLINE_LINUX_DEFAULT = "splash silencieux amd_iommu = on"

Ensuite, exécutez update-grubet redémarrez

Ce lien m'a beaucoup aidé: https://www.centos.org/forums/viewtopic.php?f=47&t=48115

Voir aussi: https://pve.proxmox.com/wiki/Pci_passthrough

Cela m'a quelque peu échappé car je pensais que l'iommu était une alternative AMD au VT-D.

Anonymouslemming
la source
Et si cela ne fonctionne pas, votre processeur peut ne pas prendre en charge VT-D ou AMD-VI (la question est claire - je poste ici pour les autres)
ndemou
5

Ajout à la réponse de Anonymouslemming: Il semble y avoir un bogue dans Ubuntu (18.04 pour moi), ce qui provoque le paramètre pour GRUB_CMDLINE_LINUX_DEFAULT dans / etc / default / grub à ignorer.

Il peut être corrigé en commentant GRUB_CMDLINE_LINUX_DEFAULT dans /etc/default/grub.d/50-curtin-settings.cfg

https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1569567

Mads Y
la source
1

Vous semblez avoir la configuration matérielle requise car un autre module l'utilise (IOAPIC) Dans ce cas, vous devez simplement configurer la fin du logiciel.

Il semble que vous devez vous assurer que toutes les conditions préalables sont installées pour prendre en charge le détachement du périphérique approprié. Il semble que vous ne les ayez pas installés ou qu'ils ne soient pas configurés.

Vous devez avoir installé et initialisé les bibliothèques et modules de noyau appropriés avant d'essayer de les utiliser dans un cas comme celui-ci. Il s'agira de divers utilitaires système "hôte" et modules de noyau pour votre configuration KVM.

Vous devez lire la section du manuel sur la façon de configurer correctement votre solution KVM appropriée et suivre ces étapes avant d'essayer de simplement exécuter les utilitaires. Ils ne se configurent pas simplement au premier lancement simplement parce que les packages nécessaires sont installés.

Veuillez noter que si le périphérique en question est intégré dans la carte mère, il peut ne pas être techniquement un périphérique PCI, mais un périphérique PCI-Mapped. Ces périphériques sont en fait connectés par d'autres moyens, mais sont mappés à l'espace BIOS PCI à l'aide de leur BIOS. Ils peuvent être compatibles ou non avec le détachement du périphérique, selon divers aspects de la façon dont ils sont connectés au système.

En outre, vous ne pourrez peut-être pas détacher des sous-périphériques sans détacher les périphériques parents, si leurs pilotes sont interdépendants. Vous pouvez uniquement détacher des périphériques avec une certitude absolue qui est le périphérique parent qui est le contrôleur PCI, le pont PCI ou tout autre contrôleur ou pont de bus pris en charge

Robert Wm Ruedisueli
la source
Merci pour l'information. Je suppose que ma question aurait dû inclure "Où puis-je trouver de la documentation pour le faire dans KVM" pour être plus précis.
Anonymouslemming
0

Je suis sur centos7

J'ai eu cette erreur qui m'a conduit ici, mais mon problème n'était pas de mettre à jour le (dans mon cas) vim /etc/sysconfig/grubet d'ajouter intel_iommu=onà la fin de la ligne pourGRUB_CMDLINE_LINUX

Je devais exécuter cette commande

grub2-mkconfig -o /boot/grub2/grub.cfg

puis redémarrez

Remarque: j'ai également exécuté grub2-mkconfig avec un redémarrage avant la commande ci-dessus et cela n'a rien fait pour moi d'après ce que j'ai vu.

référence: https://bugzilla.redhat.com/show_bug.cgi?id=1269446

Commentaire 11 et 12

gstlouis
la source