it-swarm-ja.com

nvidiaドライバーによってオーバーライドされているpci-stubまたはvfio-pci

VGAパススルーの設定に問題があります。 E5-1650v2、ホストディスプレイとしてNvidia GTX 970、Asus X-99E-WSのVM)に渡すQuadroK4000を実行しています。これはUbuntu16.04です。Vt-dがオンになっています。

K4000をpci-stubとvfio-pciの両方にバインドしようとしましたが、機能しません。コマンドライン:

intel_iommu=on pci-stub.ids=10de:11fa,10de:0e0bまたは

intel_iommu=on vfio-pci.ids=10de:11fa,10de:0e0b

そして/etc/initramfs-tools/modulesで。どちらの手法も、オーディオデバイスがそれぞれスタブまたはvfioドライバーにバインドされることになりますが、Nvidiaドライバーは常に実際のディスプレイデバイスを取得します。

設定してみました

nvidia id=10de:13c2,10de:0fbb

(これは970カードです)/etc/initramfs-tools/modulesでそれが機能するかどうかを確認しますが、違いはありませんでした。

また、デバイスIDを/sys/bus/pci/drivers/nvidia/unbindにエコーして、コマンドラインからカードのバインドを解除しようとしました。これにより、...drivers/nvidia/ディレクトリから削除されますが、bashもロックされます(コアの100%に到達し、強制終了できません)。

Nvidiaドライバーに1枚のカードにのみバインドするように指示する方法はありますか?

編集:

異なる動作があるかどうかを確認するために、代わりに970をvfioにバインドしてみました。 nvidiaドライバーはまだビデオデバイスを取得しますが、少なくとも/ dev/vfioのvfioグループがそれを実行しているのを確認しています。これは、上記で注意しなかったことが以前は発生していませんでした。

どういうわけかPCIIDの注文が関係しているのだろうか。 K4000は06、970は09で、プリブートとブートプロセスがK4000に表示されます。どのカードを「プライマリ」にするかをBIOSに指示する方法がわかりません。また、BIOSがそのカードを優先したため、カーネルがドライバをvfio/stubにバインドすることを拒否するのではないかと思います。それは私がそれを壊してカードを並べ替える必要があることを意味します。

1
duplicate_id

これはまだ進行中の作業ですが、ある種の作業が終わったのは、1枚のカードを早期にアンバインドすることでした。実行するsystemdユニットファイルを追加しました。

virsh ondedev-detach pci_0000_08_00_0

Lightdmユニットの前に実行します。次にvfio-pciが割り当てられ、通常どおり通過できます。 virshを使用してデタッチすることと/ sys/bus/ide/drivers /.../ unbindを使用することの違いはわかりませんが、virshはコアをロックしません。

これは、(a)970を通過し、(b)Nouveauドライバーを使用することです。 K4000で動作させることができず、しばらくの間NvidiaBLOBを再試行していません。そのために私が考えることができる唯一の理由は、それがより低いPCI IDであり、BIOSによって使用されるということです。その理論をテストするためにマシンを分解すると、少し待つ必要があります。

0
duplicate_id