GNU/Linux >> LINUX-Kenntnisse >  >> Linux

PCI-Stub Vs Vfio-PCI?

Ich möchte Sie fragen, welchen Vorteil die Verwendung von VFIO-PCI gegenüber PCI-STUB hat?

Ich habe diesen Artikel „PCI passthrough via OVMF“ gefunden, aber sie sagen nicht alle Vorteile, sie sagen nur, dass VFIO einige Vorteile hat.

Vielen Dank

Akzeptierte Antwort:

PCI-STUB ist ein Dummy-Treiber. Es wurde ursprünglich entwickelt, weil
die ursprüngliche KVM-Gerätezuweisung nicht wirklich an das zugewiesene
Gerät als Host-Treiber gebunden war, es hat sich einfach das Gerät gegriffen und damit begonnen,
es zu verwenden. Da KVM kein richtiger Gerätetreiber ist, könnte ein anderer Hosttreiber versuchen, sich an das Gerät zu binden, während KVM es einem Benutzer zugewiesen hat. Der PCI-Stub-Treiber wurde eingeführt, um den Treibersteckplatz für das Gerät zu belegen, während KVM davon Gebrauch machte.

Im Gegensatz zu pci-stub ist vfio eine vollständige Schnittstelle für Userspace
-Treiber. Es bietet sicheren, isolierten und IOMMU-geschützten Zugriff auf das
Gerät.

Vorteile von vfio:

  1. pci-stub ist oft in den Kernel eingebaut, dadurch kann es sich früher an Geräte binden als Treiber, die ladbare Module sind. Mit diesem Setup können wir pci-stub anweisen, sich an Geräte zu binden, bevor der Host-Treiber sie erreichen kann, damit wir das Gerät in einem makellosen Zustand halten können, um es einem
    Gast zuzuweisen.

  2. Der andere kleinere Anwendungsfall mit vfio ist die IOMMU-Gruppierung. Wenn Sie
    eine Gruppe mit mehreren Geräten haben, müssen alle Geräte in der Gruppe
    an kompatible Treiber gebunden werden, sonst betrachtet vfio die Gruppe
    als nicht funktionsfähig. Dadurch soll verhindert werden, dass Host-Treiber innerhalb der gleichen
    Gruppe wie ein benutzergesteuertes Gerät sind, da sie nicht voneinander isoliert wären. Bei pci-stub wissen wir, dass dieser Treiber keine
    DMA im Namen des Hosts initiiert, also betrachten wir ihn als kompatibel.

    Wenn Sie also Endpunkte in Ihrer IOMMU-Gruppe haben, mit denen Sie etwas tun müssen, um die Gruppe funktionsfähig zu machen, aber sicherstellen möchten, dass der Benutzer keinen Zugriff darauf hat, können Sie das Gerät an pci-stub binden. Dies bietet ein wenig zusätzlichen Schutz gegenüber der Bindung des Geräts an vfio-pci, da ein kompromittierter Benutzer nicht einfach andere Geräte innerhalb der Gruppe öffnen kann, die über die vfio-Schnittstelle an vfio-pci gebunden sind.

Verwandte:Wie kann die Zeichencodierung ermittelt werden, die ein Terminal in einem C/C++-Programm verwendet?
Linux
  1. Alsa-Standardgerät (hw:0,0) in Asoundrc konfigurieren?

  2. So erstellen Sie ein virtuelles Blockgerät (Loop-Gerät/Dateisystem) in Linux

  3. uflash:Befehl nicht gefunden

  4. Befehl setpci – PCI-Gerät konfigurieren

  5. Bash:Kein Platz mehr auf dem Gerät

Unter Linux ist alles eine Datei – Teil 1

Linux – Sysfs und Devtmpfs?

Eine SD-Karte replizieren?

Dauerschleifengerät?

Wie mounte ich ein Gerät unter Linux?

Erstellen Sie ein Blockgerät im RAM