KVM 上的调谐卡 PCI 直通

KVM 上的调谐卡 PCI 直通

过去几天我一直在到处搜索,但似乎找不到答案。我有一块华硕 P5E VM DO 主板和 Xeon 处理器,所以两者都支持可视化。我正在尝试弄清楚如何为我的调谐器卡设置 PCI 直通。主机和客户系统都是 Ubuntu 14.04 LTS。我使用本指南使用 [脚本][2] 有人能帮助逐步添加 PCI 卡吗?我尝试了以下操作本指南但它似乎不适用于 Ubuntu。

答案1

这最终成为一个两部分的答案,如果它可以帮助别人的话,它就在这里:


  1. 回答最初的问题,要添加 PCI 直通,最好使用虚拟机管理器。选择您的虚拟机并单击打开. 得查看详情并点击“添加硬件“按钮。您也可以通过命令行完成同样的事情:

server$ virsh edit VM_name 并将这些行添加到 XML 文件中。

<hostdev mode='subsystem' type='pci' managed='yes'>
  <source>
    <address domain='0x0000' bus='0x01' slot='0x01' function='0x2'/>
  </source>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</hostdev>

您可以使用以下方式查找域、总线、插槽和功能名称

lspci -t

lspci -n

  1. 现在,要使上述过程正常工作,您首先必须解除当前驱动程序与 PCI 卡的绑定,并将其绑定到虚拟机驱动程序。 在我的例子中,这是 lspci --v 命令的摘录

server$ lspci -nnv

01:01.0 Multimedia video controller [0400]: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [14f1:8800] (rev 05)
    Subsystem: DViCO Corporation FusionHDTV 5 Gold [18ac:d500]
    Flags: bus master, medium devsel, latency 64, IRQ 17
    Memory at fb000000 (32-bit, non-prefetchable) [size=16M]
    Capabilities: <access denied>
    Kernel driver in use: cx8800

解除绑定的说明KVM 项目网站没有帮助,因为它们引用了已弃用的 pci-stub(据我所知)。请执行以下操作以解除驱动程序的绑定并将其绑定到 VFIO 驱动程序:

server$ sudo modprobe kvm_intel
server$ sudo modprobe kvm
server$ kvm-ok
server$ modprobe vfio-pci
server$ sudo chmod 222 /sys/bus/pci/drivers/vfio-pci/new_id
server$ sudo chmod 222 /sys/bus/pci/devices/0000\:01\:01.2/driver/unbind
server$ echo 0000:01:01.2 > /sys/bus/pci/devices/0000\:01\:01.2/driver/unbind
server$ echo "14f1 8802" > /sys/bus/pci/drivers/vfio-pci/new_id

您会注意到,我必须使用 chmod 才能获得解除/绑定驱动程序的权限。同样,您需要先执行步骤 2,然后才能执行步骤 1。


  1. 如果在添加 PCI 直通时出现权限问题,请执行以下操作

    服务器$modprobe -r vfio_iommu_type1 服务器$modprobe vfio_iommu_type1 allow_unsafe_interrupts=1

我发现了这个技巧这里

相关内容