web-dev-qa-db-ja.com

PCI-STUBとVFIO-PCI

PCI-STUBよりもVFIO-PCIを使用する利点は何ですか?

私はこの記事「 OVMF経由のPCIパススルー "を見つけましたが、すべての利点を述べているわけではなく、VFIOにはいくつかの利点があると述べています。

ありがとうございました

4
tomsk

PCI-STUBはダミードライバです。元々開発されたのは、元のKVMデバイス割り当てが実際にホストドライバーとして割り当てられたデバイスにバインドされず、単にデバイスを取得して使用し始めたためです。As KVMは適切なデバイスドライバーではありません。KVMがユーザーに割り当てている間、別のホストドライバーがデバイスにバインドしようとする可能性があります。pci-stubドライバーは、 KVMが使用するデバイスのドライバースロット。

Pci-stubとは対照的に、vfioはユーザースペースドライバーの完全なインターフェイスです。デバイスへの安全で隔離されたIOMMU保護アクセスを提供します。

Vfioの利点:

  1. 多くの場合、pci-stubはカーネルに組み込まれているため、ロード可能なモジュールであるドライバーよりも早くデバイスにバインドできます。この設定により、ホストドライバーがデバイスに到達する前にデバイスにバインドするようにpci-stubに指示できるため、ゲストに割り当てるためにデバイスを初期状態に保つことができます。

  2. Vfioでのもう1つの少ない使用例は、IOMMUグループ化です。複数のデバイスを持つグループがある場合、グループ内のすべてのデバイスを互換性のあるドライバーにバインドする必要があります。そうしないと、vfioはグループを実行不可能と見なします。これは、ユーザーが制御するデバイスと同じグループ内のホストドライバーが互いに分離されないようにするためです。 pci-stubを使用すると、このドライバーはホストに代わってDMAを開始しないため、互換性があると見なします。

    したがって、IOMMUグループにエンドポイントがあり、グループを実行可能にするために何かを行う必要があるが、ユーザーがそれにアクセスできないようにしたい場合は、デバイスをpci-stubにバインドできます。これにより、デバイスがvfio-pciにバインドされるのに対して、vfio-pciにバインドされているグループ内の他のデバイスを侵害されたユーザーが単に開くことができなくなるため、保護が少し追加されます。

3
Ehtesham

Ehteshamが回答したように、pci-stubはダミーのドライバーであり、nouvaeu、nvidia、radeon、amdgpuなどのデバイスドライバーが読み込まれないようにして、デバイスのBIOSがドライバーによって初期化されず、KVMに渡されるようにします。

それを追加したいのは、vfio-pciモジュールには、ロードする他のモジュールをリストするconfファイルを配置する構成オプションがあり、デバイスドライバーの前にvfio-pciがロードされるようにするためです。たとえば、Ubuntu 18.04では、次の内容で/etc/modprobe.d/にvfio-pci.confを作成します。

#options vfio-pci ids=vendid:devid,vendid:devid2,...
softdep radeon pre: vfio-pci
softdep amdgpu pre: vfio-pci
softdep snd_hda_intel pre: vfio-pci
#softdep nouveau pre: vfio-pci
#softdep drm pre: vfio-pci
#softdep nvidia pre: vfio-pci
#softdep xhci_hdc pre: vfio-pci

Vfio-pci idリストをgrubに追加した場合、最初の行は不要です。

2
Gediz GÜRSU