Arm场景将8张昇腾AI处理器直通给虚拟机后使用npu-smi工具只能查询到5张昇腾AI处理器
2025/04/11
72
问题信息
| 问题来源 | 产品大类 | 产品子类 | 关键字 |
|---|---|---|---|
| 内部测试 | 部署虚拟机 | 虚拟机 | 虚拟机、QEMU |
问题现象描述
Arm场景将8张昇腾AI处理器直通给虚拟机后使用npu-smi工具只能查询到5张昇腾AI处理器。
通过执行命令dmesg | grep “BAR 4”查询,显示如下则表示为PCIe地址空间不足导致。

原因分析
默认的开源QEMU配置中,将PCIe域配置的地址空间限制在512G,而每张昇腾AI处理器所需要的BAR4资源为64G,结合虚拟机本身已使用的地址资源,最终无法在申请出足够的地址空间,导致分配失败。
解决措施
执行如下命令修改QEMU源码后重新构建并安装QEMU。
修改“virt.c”文件。
vi ./hw/arm/virt.c
修改extended_memmap数组定义,加粗字体由512修改至1024后保存。
static MemMapEntry extended_memmap[] = {
/* Additional 64 MB redist region (can contain up to 512 redistributors) */
[VIRT_HIGH_GIC_REDIST2] = { 0x0, 64 * MiB },
[VIRT_HIGH_PCIE_ECAM] = { 0x0, 256 * MiB },
/* Second PCIe window */
[VIRT_HIGH_PCIE_MMIO] = { 0x0, 1024 * GiB },


