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

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

我有一台带有 2 个 NIC 的服务器

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

我想要将这 2 个 NIC 设备分配给客户机(ubuntu server 14.04),我正在关注这个主题本主题:如何在 KVM 中使用 VT-d 分配设备 所以我按照它说的做了:

  • 修改内核配置:

    使 menuconfig 设置“总线选项(PCI 等)”->“支持 DMA 重映射设备”为““将“总线选项(PCI 等)”->“启用 DMA 重映射设备”设置为““设置“总线选项(PCI 等)”->“PCI Stub 驱动程序”为“*”保存并重建内核

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

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

    • 我还通过在 /boot/grub/grub.conf 文件中的内核行附加 intel_iommu=on 参数来激活内核中的 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 -k 验证了解除绑定:驱动程序是 pci_stub

当我在客户虚拟机的 XML 文件中添加以下几行时,出现错误

设备 01:00.0 已在使用中

XML 添加

hostdev 模式 ='子系统' 类型 ='pci' 管理 ='yes' 源地址域 ='0x0000' 总线 ='0x01' 插槽 ='0x00' 功能 ='0x0'/ /source /hostdev

相关内容