You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Aarch64架构下如何为KVM虚拟机添加VFIO-IOMMU支持?

解决aarch64 KVM虚拟机VFIO-IOMMU(SMMUv3)支持问题

1. 确认主机层面的前置条件

  • 检查主机SMMUv3是否正常初始化:
    dmesg | grep -i smmu
    
    输出需包含类似ARM SMMUv3 initialized的内容,确保主机内核已正确识别硬件SMMU。
  • 加载必要的VFIO模块:
    modprobe vfio vfio_iommu_type1 vfio_pci
    
    可将这些模块写入/etc/modules-load.d/vfio.conf实现开机自启。

2. 修正虚拟机XML配置

仅添加<iommu model='smmuv3'/>不足以让客户机识别SMMUv3,需补充以下配置:

  • 确保CPU特性支持:将虚拟机CPU模式设置为host-passthrough或包含虚拟化扩展的virt模式,XML示例:
    <cpu mode='host-passthrough' check='none'/>
    
  • 添加SMMUv3设备并锁定内存:在<devices>节点下添加IOMMU配置,同时启用内存锁定(避免VFIO访问内存时被换出):
    <memoryBacking>
      <locked/>
    </memoryBacking>
    <devices>
      <!-- 原有设备配置 -->
      <iommu model='smmuv3'/>
    </devices>
    
  • 验证QEMU命令行:启动虚拟机后,通过以下命令检查QEMU是否加载了SMMUv3设备:
    ps aux | grep qemu-system-aarch64 | grep smmuv3
    
    若输出包含-device smmuv3,说明配置生效。

3. 检查客户机内核配置

客户机Ubuntu 22.04需启用SMMUv3相关内核配置:

zcat /proc/config.gz | grep CONFIG_ARM_SMMU_V3

若输出为CONFIG_ARM_SMMU_V3=y或=m,则配置正常;若未开启,需重新编译内核并启用该选项。

4. QEMU版本限制说明

你的QEMU 4.2.1版本不支持ARM SMMUv4(SMMUv4支持从QEMU 5.0开始引入),但该版本的virt机器类型已支持SMMUv3,无需升级即可使用SMMUv3功能。


内容的提问来源于stack exchange,提问作者wangt13

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 11:45:29