Problèmes et questions concernant le noyau et le support matériel.
Répondre

IOMMU=PT ou IOMMU=SOFT ?

#1Messageil y a 7 ans

Bonjour,
ma carte mère, une MSI 970 Gaming (MS-7693) pour processeurs AMD FX pose des problèmes vis à vis des ports USB3.
Cela semble lié au chipset utilisé : un VIA VL806. Le problème rencontré fait que je n'ai tout simplement pas l'usage de mes ports USB3 (sous linux, mais tout fonctionne à merveille sous Windows 10...).
Enfin bref, à force de parcourir le Net, j'ai dans un premier temps trouvé une solution simple et efficace : rajouter IOMMU=SOFT dans le GRUB.
Et récemment, j'ai vu que l'option IOMMU=PT IOMMU=1 fonctionne également.
Ma question est donc de savoir quelle solution est à privilégier, tant du point de vue de la sécurité (surtout) que des performances.
J'avoue ne pas bien comprendre la fonction de IOMMU... Cela semble lié à l'adressage mémoire, et l'option PT (PassThrough) m'inquiète un peu.
Je fais donc appel aux plus érudits pour m'aider à faire mon choix entre ces deux options par ailleurs équivalentes pour l'utilisateur lambda que je suis.
Merci !

IOMMU=PT ou IOMMU=SOFT ?

#2Messageil y a 7 ans

gedeon a écrit :Enfin bref, à force de parcourir le Net, j'ai dans un premier temps trouvé une solution simple et efficace : rajouter IOMMU=SOFT dans le GRUB.

Là, je sens que tu vas intéresser du monde ! Tu pourrais donner les liens que tu as retenu ?
Sinon, pour ta question, on est dans du pur code kernel . La réponse est peut être dans ce très court résumé :gsourire: des options du noyau

IOMMU=PT ou IOMMU=SOFT ?

#3Messageil y a 7 ans

Euh, j'ai pas conservé les liens, désolé. Mais une recherche "IOMMU AMD-Vi USB" renvoie déjà pas mal de pages.
Quant à la doc mentionnée : c'est du lourd !!! Mais merci pour l'info.

IOMMU=PT ou IOMMU=SOFT ?

#4Messageil y a 7 ans

alors la différence entre IOMMU=SOFT et IOMMU=PT IOMMU=1
en soft toutes les adresses re-mappés passe par IOMMU ( avec de grande chance aussi pour la virtualisation )
avec PT , 1 cela signifie PassThru ( passe à travers ...)

cela concerne donc tout accès par DMA ( accès direct adresse CPU , périphérique ) , c'est plus rapide MAIS cela ne fonctionne pas sous la virtualisation,
il faut donc un Mapping IOMMU pour assurer ce point

autre aspect non négligeable , c'est plus compliqué a attaquer un périphérique dont les adresses sont accessible par IOMMU , car il y a toujours en association de protection mémoire à la base ,
chose qui n'existe pas en DMA

cela un impact direct sur la video , car c'est essentiellement du mapping mémoire vers la vidéo que tu envoie pour l'affichage
sauf si ( sans IOMMU) , en simplifiant je fais un accès immédiat j'ai :
@video-frame1 , frame1 +offset , etc --> on envoie le contenu vers le port video

en cas de passage par IOMMU ( ou même par PassThru )
@video-frame-1 --> adresse virtuelle IOMMU --> envoi vers le port video
@video-frame-1 + offset , adresse virtuelle IOMMU --> envoi vers le port video
tu vois assez rapidement qu'il te faut a minima 1 a 2 instruction supplémentaire ( et parfois plus s'il faut la chercher ) pour afficher une frame sur ton port video

en gros , pour les CPU sans IOMMU correct ,
@adresse memoire = @adressse rélle du peripherique que le CPU peut gerer immédiatement par DMA

avec IOMMU ( cas de base de tout processeur X86 )
le CPU utilise une adresse Virtuelle --> calcul systematique de l'adresse réelle

le role de IOMMU est dans les 2 sens pour adresses réels vers virtuels ou adresses virtuels vers réel

IOMMU=PT ou IOMMU=SOFT ?

#5Messageil y a 7 ans

Merci stephane pour ces explications !!!
Cela va me permettre, après maturation, de faire mon choix...

Encore un grand merci :gsourire:
Répondre