【问题解决】Mellanox网卡打开VF报错not enough MMIO resources for SR-IOV如何解决?(intel_iommu=on iommu=pt pci=realloc)

快速回忆

grubby --update-kernel=$(grubby --default-kernel) --args="intel_iommu=on iommu=pt pci=realloc"
reboot #修改后需要重启
echo 1 > /sys/class/net/enp6s0f0/device/sriov_numvfs 
echo 0 > /sys/class/net/enp6s0f0/device/sriov_numvfs
echo 4 > /sys/class/net/enp6s0f0/device/sriov_numvfs 

背景

本文记录的是Mellanox网卡打开SRIOV过程中遇到not enough MMIO resources 问题。

问题

执行:echo 1 > /sys/class/net/enp6s0f0/device/sriov_numvfs 会报错

[615 11:13:15 2025] mlx5_core 0000:06:00.0: not enough MMIO resources for SR-IOV
[615 11:13:15 2025] mlx5_core 0000:06:00.0: mlx5_pci_enable_sriov:166:(pid 13490): pci_enable_sriov failed : -12
[615 11:13:15 2025] mlx5_core 0000:06:00.0: mlx5_sriov_enable:190:(pid 13490): mlx5_pci_enable_sriov failed : -12

在这里插入图片描述

解决办法

打开VF需要开启cpu的iommu,以及涉及到动态添加节点,需要开启pci支持realloc功能,才能d重新分配资源。

grubby --update-kernel=$(grubby --default-kernel) --args="intel_iommu=on iommu=pt pci=realloc"
reboot #修改后需要重启

参数说明:
intel_iommu=on 开启iommu(Intel 处理器的 IOMMU(又称 VT-d,Virtualization Technology for Directed I/O))
iommu=pt 开启iommu直通(Pass-Through),以支持虚拟机可直接与指定物理硬件通信(部分旧内核使用 iommu.passthrough=1 替代 iommu=pt)
pci=realloc。解决 PCI 设备在初始化时固定分配内存地址的问题

重启后

实操后效果:
在这里插入图片描述
not enough MMIO resources for SR-IOV已解决。
在这里插入图片描述
lspci也能看到设备:
在这里插入图片描述

继续实验,尝试修改为4个,也能正确看到,需要注意的是需要先将已经虚拟化的清空为0。
在这里插入图片描述
ip link查看生效情况:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值