首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PCI-STUB与VFIO-PCI

PCI-STUB与VFIO-PCI
EN

Unix & Linux用户
提问于 2016-12-06 12:59:03
回答 2查看 13.9K关注 0票数 6

我想问您,在PCI存根上使用VFIO有什么好处?

我发现这篇文章"PCI通过OVMF“,但他们并没有说所有的优点,他们只是说VFIO有一些好处。

谢谢

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2018-06-19 04:33:36

PCI-存根是一个虚拟的驱动程序。它最初的开发是因为最初的KVM设备分配并没有作为主机驱动程序绑定到指定的设备,它只是抓取设备并开始使用它。由于KVM不是适当的设备驱动程序,当KVM将其分配给用户时,另一个主机驱动程序可以尝试绑定到该设备。引入pci-存根驱动程序来占用设备的驱动槽,而KVM则利用它。

与pci存根不同,vfio是用户空间驱动程序的完整接口。它提供了对设备的安全、隔离和IOMMU保护访问。

vfio的优势:

  1. pci-存根通常内置在内核中,这允许它比可加载模块的驱动程序更早地绑定到设备。使用此设置,我们可以指示pci存根在主机驱动程序到达设备之前绑定到设备,以便将设备保持在原始状态,以便分配给来宾。
  2. 使用vfio的另一个较小的用例是IOMMU分组。如果您有一个具有多个设备的组,那么组中的所有设备都必须绑定到兼容的驱动程序,否则vfio将认为该组不可行。这是为了防止主机驱动程序在与用户控制设备相同的组内,因为它们不会彼此隔离。对于pci-存根,我们知道这个驱动程序不会代表主机启动任何DMA,所以我们认为它是兼容的。因此,如果您的IOMMU组中有端点,您需要使用这些端点来使组可行,但您希望确保用户没有访问它的权限,则可以将设备绑定到pci存根。这增加了一些额外的保护,将设备绑定到vfio,因为受影响的用户不能简单地打开组中通过vfio接口绑定到vfio的其他设备。
票数 6
EN

Unix & Linux用户

发布于 2020-03-29 08:05:36

正如Ehtesham所回答的,pci-stub是一个虚拟驱动程序,可以防止诸如nouvaeu、nvidia、radeon、amdgpu等设备驱动程序加载,这样您的设备的BIOS就不会被驱动程序初始化,并且可以传递到KVM。

我想补充一下,这里有一个配置选项,您可以在其中放置一个conf文件,其中可以列出vfio之后要加载的其他模块,确保vfio在设备驱动程序之前加载。

例如,在Ubuntu18.04中,使用以下内容在/etc/modprobe.d/中创建vfio-pci.conf:

代码语言:javascript
复制
#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 id列表添加到grub中,则不需要第一行。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/328422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档