質問: 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枚のカードを早期にアンバインドすることでした。実行するsystemdユニットファイルを追加しました。virsh ondedev-detach pci_0000_08_00_0lightdmユニットの前に実行します。次にvfio-pciが割り当てられ、通常どおり通過できます。 virshを使用してデタッチすることと/ sys/bus/ide/drivers /.../ unbindを使用することの違いはわかりませんが、virshはコアをロックしません。これは、(a)970を通過し、(b)nouveauドライバーを使用することです。 k4000で動作させることができず、しばらくの間nvidiablobを再試行していません。そのために私が考えることができる唯一の理由は、それがより低いpci idであり、biosによって使用されるということです。その理論をテストするためにマシンを分解すると、少し待つ必要があります。