问题描述
设备进入系统后出现(NULL net_device): edma: edma_host_send_msg错误日志信息
环境信息
-
操作系统:[root@localhost ~]# uname -a
Linux localhost 5.10.0-216.0.0.115.oe2203sp4.aarch64 #1 SMP Thu Jun 27 15:22:10 CST 2024 aarch64 aarch64 aarch64 GNU/Linux
[root@localhost ~]#
-
软件版本:OpenUBMC25.12.02SP2
-
硬件配置:[root@localhost ~]# lscpu
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 64
On-line CPU(s) list: 0-63
Vendor ID: HiSilicon
BIOS Vendor ID: HiSilicon
Model name: Kunpeng-920
BIOS Model name: HUAWEI Kunpeng 920 5220
Model: 0
Thread(s) per core: 1
Core(s) per socket: 32
Socket(s): 2
Stepping: 0x1
BogoMIPS: 200.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma dcpop asimddp asimdfhm ssbs
Caches (sum of all):
L1d: 4 MiB (64 instances)
L1i: 4 MiB (64 instances)
L2: 32 MiB (64 instances)
L3: 64 MiB (2 instances)
NUMA:
NUMA node(s): 2
NUMA node0 CPU(s): 0-31
NUMA node1 CPU(s): 32-63
Vulnerabilities:
Gather data sampling: Not affected
Itlb multihit: Not affected
L1tf: Not affected
Mds: Not affected
Meltdown: Not affected
Mmio stale data: Not affected
Retbleed: Not affected
Spec rstack overflow: Not affected
Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Spectre v1: Mitigation; __user pointer sanitization
Spectre v2: Not affected
Srbds: Not affected
Tsx async abort: Not affected
[root@localhost ~]#
重现步骤
1、设备开机进入系统,查看dmesg日志信息
2、设备开机进入系统,在BMC KVM界面查看显示信息
3、通过串口连接设备,查看基本信息
期望结果
1、dmesg日志中无异常信息
2、KVM中不会弹出 edma: edma_host_send_msg错误日志信息
3、串口输出信息中不会弹出 edma: edma_host_send_msg错误日志信息
实际结果
1、dmesg日志中出现(NULL net_device): edma: edma_host_send_msg错误日志信息
2、KVM中弹出 edma: edma_host_send_msg错误日志信息
3、串口输出信息中会弹出 edma: edma_host_send_msg错误日志信息
尝试过的解决方案
卸载iBMA然后./install.sh -s --enable-iBMA_https=true重新安装iBMA。
分析结论
1、打印信息来自iBMA;
2、停止掉iBMA服务后打印信息没有了;
答案内容由AI生成,仅供参考:
结论
根本原因:iBMA 驱动与当前 openEuler 22.03 SP4 内核版本不兼容,导致 edma 通道初始化失败,iBMA 获取不到有效的网络设备,进而抛出 NULL net_device 错误。
推荐解决方案:
- 升级操作系统至 openEuler 24.03 LTS SP3,并重新安装 iBMA;
- 或编译对应内核版本的 iBMA 驱动并手动安装;
- 完成后重启 iBMA 服务,并检查 edma 驱动和 veth 接口状态。
若问题依旧存在,请提供 iBMA 日志和 BMC 一键收集日志,以便进一步定位。
点击此处查看详细分析解答
根据您提供的错误信息 (NULL net_device): edma: edma_host_send_msg,结合上下文知识库内容,以下是对该问题的综合分析及排查建议。
问题原因分析
-
错误来源
您已验证该打印信息来自 iBMA(Intelligent Baseboard Management Agent),且停止 iBMA 服务后错误消失。这表明 iBMA 在尝试通过 edma 通道发送消息时,传入了一个空指针(NULL net_device),导致内核打印该错误。
-
edma 通道依赖
- edma 是 iBMA 与 BMC 之间带内通信的关键通道。根据文档,edma 驱动(
host_edma_drv、host_cdev_drv)需要在 OS 侧和 BMC 侧均正常加载,且对应的设备文件 /dev/hwibmc 必须存在(参考 搜索结果的第1条)。
- 如果 edma 驱动未正确加载,或与 iBMA 版本不匹配,就会导致 iBMA 无法获取有效的网络设备对象,从而出现
NULL net_device 错误。
-
版本与系统兼容性
您使用的环境为:
- OS: openEuler 22.03 SP4(内核 5.10.0-216)
- 软件版本: OpenUBMC 25.12.02 SP2
- 硬件: 鲲鹏 920
根据 文档块2,iBMA 软件包的驱动仅携带了特定 OS 版本(如 openEuler 24.03 LTS SP2)的驱动。在 openEuler 22.03 SP4 上,系统可能自带版本较低的 iBMA 驱动(如 0.3.6),该驱动无法正常加载,导致 iBMA 服务启动失败或功能异常。您当前的错误很可能正是由于 iBMA 驱动无法匹配当前 OS 内核,造成 edma 设备初始化失败。
-
驱动与网络设备关联
上下文知识库中提及:iBMA 依赖 PCIe 设备来建立与 BMC 的通信,且 iBMA 使用 veth 虚拟网口(host_veth_drv.ko)进行数据交互。若 veth 驱动未加载或与 edma 冲突,也可能导致 net_device 为 NULL。
排查建议
1. 检查驱动加载状态
在 OS 侧和 BMC 侧均执行以下命令,确认 edma 和 veth 驱动是否正常加载:
lsmod | grep edma
lsmod | grep veth
modprobe host_edma_drv # 尝试手动加载
modprobe host_veth_drv
同时检查对应的设备文件是否存在:
ls /dev | grep hwibmc
2. 查看 iBMA 详细日志
收集 iBMA 的日志文件(位于 /opt/huawei/ibma/log/ 或 /var/log/ibma/)和 BMC 一键收集日志,搜索关键字 edma_host_send_msg 或 net_device,定位具体调用栈。
对于 iBMA 日志收集,可参考文档中的命令:
tar -czf ibma_log.tar.gz /opt/huawei/ibma/log/
3. 确认 iBMA 版本与 OS 兼容性
根据您的 OS 版本(openEuler 22.03 SP4),请检查 iBMA 软件包中是否包含对应 OS 的驱动(iBMA2.0/drivers/openEuler/ 目录下是否存在匹配内核版本的 .rpm 包)。若不存在,建议:
- 升级 OS 至 iBMA 软件包支持的版本(如 openEuler 24.03 LTS SP3,参考文档块2);
- 或 手动编译驱动:通过 iBMA 驱动源码包编译
kmod-iBMA_driver-xxx.rpm 并安装,然后重启 iBMA 服务。
命令参考:
rpm -ivh kmod-iBMA_driver-xxx.rpm
systemctl restart iBMA.service
4. 验证 veth 接口状态
确保虚拟网口 veth 已正确创建:
ifconfig veth
若不存在,则需先加载 veth 内核模块:
modprobe veth
insmod /opt/huawei/ibma/driver/host_veth_drv.ko
5. 临时规避与系统性修复
- 临时规避:停止 iBMA 服务可消除错误打印,但会丢失带内管理能力。
- 系统性修复:参考 文档块4(IPMI管理定位问题),确保 edma 服务启动时无设备占用冲突。该文档提到:
edma 服务启动打开四个字符设备,若 telnetd 等进程占用了相关设备,需在重启 BMC 前 killall busybox_x 以释放依赖。
结论
根本原因:iBMA 驱动与当前 openEuler 22.03 SP4 内核版本不兼容,导致 edma 通道初始化失败,iBMA 获取不到有效的网络设备,进而抛出 NULL net_device 错误。
推荐解决方案:
- 升级操作系统至 openEuler 24.03 LTS SP3,并重新安装 iBMA;
- 或编译对应内核版本的 iBMA 驱动并手动安装;
- 完成后重启 iBMA 服务,并检查 edma 驱动和 veth 接口状态。
若问题依旧存在,请提供 iBMA 日志和 BMC 一键收集日志,以便进一步定位。
JiaHuiLei
(Jia Hui Lei)
3
找到了一篇以前的帖子,可供参考: 安装iBMA后ubmc的首页没有上传cpu和内存信息 - #25,来自 zhouzijia
这里的打印是BMA向BMC发送ipmi请求,BMC没有及时给BMA返回请求结果导致的
定位的操作步骤:
在BMC后台发送 `mdbctl traceipmi start file edma` ,命令结果会输出到/tmp/ipmi.txt文件

在BMC后台的/tmp/ipmi.txt里可以看到命令的收发
