Vorrei chiederti, qual è il vantaggio dell'utilizzo di VFIO-PCI rispetto a PCI-STUB?
Ho trovato questo articolo "Passthrough PCI via OVMF", ma non dicono tutti i vantaggi, dicono solo che VFIO ha alcuni vantaggi.
Grazie
Risposta accettata:
PCI-STUB è un driver fittizio. È stato originariamente sviluppato perché
l'assegnazione del dispositivo KVM originale non si collegava effettivamente al dispositivo
assegnato come driver host, ma semplicemente prendeva il dispositivo e iniziava a usarlo
. Poiché KVM non è un driver di dispositivo appropriato, un altro driver host potrebbe tentare di collegarsi al dispositivo mentre KVM lo aveva assegnato a un utente. Il driver pci-stub è stato introdotto per occupare lo slot del driver per il dispositivo mentre KVM lo utilizzava.
A differenza di pci-stub, vfio è un'interfaccia completa per i driver userspace
. Fornisce un accesso sicuro, isolato e protetto da IOMMU al
dispositivo.
Vantaggi di vfio:
-
pci-stub è spesso integrato nel kernel, questo gli consente di collegarsi ai dispositivi prima dei driver che sono moduli caricabili. Con questa configurazione possiamo indicare a pci-stub di collegarsi ai dispositivi prima che il driver host possa accedervi in modo da poter mantenere il dispositivo in uno stato originale per l'assegnazione a un
guest. -
L'altro caso d'uso minore con vfio è con il raggruppamento IOMMU. Se
hai un gruppo con più dispositivi, tutti i dispositivi nel gruppo devono essere
associati a driver compatibili, altrimenti vfio considererà il gruppo
non valido. Ciò ha lo scopo di impedire che i driver host all'interno dello stesso gruppo
di un dispositivo controllato dall'utente non vengano isolati l'uno dall'altro
. Con pci-stub sappiamo che questo driver non avvia alcun
DMA per conto dell'host, quindi lo consideriamo compatibile.Pertanto, se hai degli endpoint nel tuo gruppo IOMMU con cui devi fare qualcosa per rendere il gruppo fattibile, ma vuoi assicurarti che l'utente non abbia accesso ad esso, puoi associare il dispositivo a pci-stub. Ciò aggiunge un po 'di protezione aggiuntiva rispetto al collegamento del dispositivo a vfio-pci poiché un utente compromesso non potrebbe semplicemente aprire altri dispositivi all'interno del gruppo che sono vincolati a vfio-pci tramite l'interfaccia vfio.