web-dev-qa-db-ja.com

PCI GPUのデバイスIDは同じです。どうして?

システムに2つのR9 280がインストールされています。 Ubuntuでlspci -nnを実行すると、両方のカードのデバイスIDが同じになります。

出力例:

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

デバイスID「8080:aa68」が同じであることに注意してください。だから私の質問は、なぜIDが同じですか?カードの1つをkvmに渡そうとしていますが、IDが同じであるため両方とも渡されます。だから私はこれを解決するために何ができますか?

更新1:私はsetpci -s 04:00.0 02.w=aa69を試してみましたが、デバイスIDが同じままであることは何もしません。 echo "8086 10f5" > /sys/bus/pci/drivers/radeon/new_idも試しましたが、ファイルが存在すると表示されます。

更新2:このecho 0000:04:00.0 > /sys/bus/pci/devices/0000:04:00.0/driver/unbindを実行すると、システムがフリーズします

2

これらはまったく同じハードウェアであるため、同じベンダーIDと同じデバイスIDが表示されます。 2枚のカードの唯一の違いは、それが入っているスロットです(おそらく出力の最初の部分)。

dmidecode –t slotを使用してlspci -nnからの出力と照合し、それぞれを識別することができますが、KVM=)とは言えません。

しかし、興味深い質問であり、一般的に私はこれに出くわしたときに「おそらく別の別のカードが必要だ」のままにしておきます。

kernel.org では、「デバイスIDを/sys/bus/pci/drivers/.../new_idに書き込むと、新しいデバイスIDをPCIデバイスドライバーに動的に追加しようとします。これにより、ドライバーは、コンパイル時にドライバーの静的デバイスIDサポートテーブルに含まれていましたデバイスIDの形式は次のとおりです:VVVV DDDD SVVV SDDD CCCC MMMM PPPP。ベンダーID、デバイスID、サブシステムベンダーID、サブシステムデバイスID、クラス、クラスマスク、およびプライベートドライバーデータ。ベンダーIDおよびデバイスIDフィールドは必須です。残りはオプションです。IDが正常に追加されると、ドライバーはデバイスをプローブし、それにバインドしようとします。例:# echo "8086 10f5" > /sys/bus/pci/drivers/foo/new_id "

そして、それはコマンドsetpci&Lトピック につながり、PCIカードのデバイスIDを変更できることを示唆しています。

したがって、これら2つの方法のいずれかを使用して、8080:aa68の1つを別のデバイスIDに変更できます。同様のカードであるが、おそらくあなたが持っているものより少し古いか新しいIDを選んでください。ランダムなデバイスIDに変更すると、おそらく問題が発生します。

2
Rinzwind