KVM网卡直通“设备已在使用中”

我有一个2个网卡的服务器

01:00.0以太网控制器:英特尔公司以太网控制器10千兆位X540-AT2(rev 01)01:00.1以太网控制器:英特尔公司以太网控制器10千兆位X540-AT2(rev 01)

我想为这个主题(ubuntu服务器14.04)分配theise 2 NICs设备,我正在讨论这个话题这个主题:如何在KVM中分配设备与VT-d,所以我做了什么说:

  • 修改内核configuration:

    设置“Bus options(PCI etc.)” – >“Enable DMA Remapping Devices” (设置DMA总线选项(PCI等)) – >“DMA重新映射设备支持” PCI等)“ – >”PCI Stub驱动程序“为”*“保存并重build内核

  • 我的dmesg | grep -e DMAR -e IOMMU显示:

    [0.000000] ACPI:DMAR 00000000ddfaabc8 000078(v01 INTEL SNB 00000001 INTL 00000001)[0.000000] Intel-IOMMU:enabled [0.018789] dmar:IOMMU 0:reg_base_addr fed90000 ver 1:0 cap> c9008020660262 ecap f010da [0.018860] IOAPIC id 2 under [1.610427] DMAR:未findATSR [1.610449] IOMMU 0 0xfed90000:使用排队失效[1.610451] IOMMU:设置RMRR:[1.610460] IOMMU:设置设备的标识映射0000:00:1d.0 [ IOMMU:为设备设置标识映射0000:00:1a.0> [0xdde16000 – 0xdde32fff] [1.610487] IOMMU:为LPC准备0-16MiB统一映射[1.610494] IOMMU:为设备设置标识映射0000:00:1f.0 [0x0 – 0xffffff]

    • 我还通过将intel_iommu = on参数附加到/boot/grub/grub.conf文件中内核行的内核行来激活内核中的Intel VT-d
    • 将BIOS上的VT-d设置为启用
    • 从主机内核驱动程序中取消绑定:

      echo“8086 10b9”> / sys / bus / pci / drivers / pci-stub / new_id echo 0000:01:00.0> /sys/bus/pci/devices/0000:01:00.0/driver/unbind echo 0000:01: 00.0> / sys / bus / pci / drivers / pci-stub / bind

    • 我用lspci -kvalidation了解除绑定:驱动程序是pci_stub

当我在guest虚拟机的XML文件中添加下面这行代码时,出现错误

设备01:00.0已经在使用中

XML添加

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