web-dev-qa-db-fra.com

Les GPU PCI ont les mêmes identifiants de périphérique. Pourquoi?

J'ai deux R9 280 installés dans mon système. Dans Ubuntu, lorsque je lance lspci -nn, les deux cartes ont le même identifiant de périphérique.

Exemple de sortie:

01:00.0 Example GPU 1 [8080:aa68]
04:00.0 Example GPU 2 [8080:aa68]

Notez que les ID de périphérique "8080: aa68" sont les mêmes. Alors ma question est pourquoi les identifiants sont-ils les mêmes? J'essaie de passer par l'une des cartes à KVM, mais les deux sont passés parce que les identifiants sont les mêmes. Alors, que pourrais-je faire pour résoudre ce problème?

pdate 1: J'ai essayé setpci -s 04:00.0 02.w=aa69 il ne fait rien, l'identifiant du périphérique reste le même. J'ai aussi essayé echo "8086 10f5" > /sys/bus/pci/drivers/radeon/new_id mais le fichier existe.

Mise à jour 2: Si je fais ceci echo 0000:04:00.0 > /sys/bus/pci/devices/0000:04:00.0/driver/unbind alors mon système se bloque

2
Programming4life

Parce qu'ils sont exactement le même matériel, ils afficheront le même identifiant de fournisseur et le même identifiant de périphérique. La seule différence entre les 2 cartes est le slot dans lequel il est assis (probablement la 1ère partie de votre sortie).

Vous pouvez utiliser dmidecode –t slot pour le faire correspondre à la sortie de lspci -nn pour les identifier mais vous ne pouvez pas dire à KVM.

Question intéressante cependant et généralement je laisserais à "vous avez probablement besoin d'une autre carte, différente" quand je suis tombé sur ceci:

Sur kernel.org , il est indiqué que "L’écriture d’un ID de périphérique sur /sys/bus/pci/drivers/.../new_id tentera d’ajouter de manière dynamique un nouvel ID de périphérique à un pilote de périphérique PCI. Ceci peut permettre au pilote de prendre en charge davantage de matériel Le format de l’ID de périphérique est le suivant: VVVV DDDD SVVV SDDD CCCC MMM PPPP (identificateur de fournisseur, ID de périphérique, ID de fournisseur de sous-système, ID de périphérique de sous-système, classe, masque et, Données du pilote privé. Les champs ID du fournisseur et ID du périphérique sont obligatoires, les autres sont facultatifs. Après avoir ajouté un ID, le pilote recherche le périphérique et tente de s'y connecter. Par exemple: # echo "8086 10f5" > /sys/bus/pci/drivers/foo/new_id "

Et cela m’amène à la commande setpci et sujet U & L qui suggère que vous pouvez modifier l’ID de périphérique des cartes PCI.

Donc, vous pouvez peut-être changer l’un des 8080:aa68 en un autre ID de périphérique avec l’une de ces 2 méthodes. Choisissez une carte d'identité similaire, mais peut-être un peu plus ancienne ou plus récente que celle que vous possédez. Le changer pour un identifiant de périphérique aléatoire causera probablement des problèmes.

2
Rinzwind