genghh
(Genghh)
2026 年8 月 31 日 05:54
1
问题描述
进入系统后,拔掉pcie网卡,dmesg有报错,收不到fdm信息
环境信息
操作系统:[如 Ubuntu 24.04]
软件版本:[如 OpenUBMC2512]
bios中开启FDM上报开关
操作步骤
platform.sr中定义fdm信息上报命令字定义:
"RestrictedIPMICmdList_WSetFdmInfoIPMICommand" : {
"ReadWrite": "0x01",
"NetFunction":"0x30",
"Command": "0x92",
"ChanProtocol" : "0x08",
"Data" : ["0xdb", "0x07", "0x00", "0x17"],
"ShiedFlag": 1
},
"RestrictedIPMICmdList_WSetFdmErInfoIPMICommand" : {
"ReadWrite": "0x01",
"NetFunction":"0x30",
"Command": "0x92",
"ChanProtocol" : "0x08",
"Data" : ["0xdb", "0x07", "0x00", "0x18"],
"ShiedFlag": 1
},
打开ipmb调试日志:
busctl --user call bmc.kepler.ipmi_core /bmc/kepler/Debug/IpmiCore/TraceIpmi bmc.kepler.Debug.IpmiCore.TraceIpmi Trace a{ss}bsyyss 0 true "ipmb" 0xff 0xff "" "file"
分析日志:
/tmp/ipmi.tx 中未收集到fdm基础信息和fdm错误信息,搜不到92 DB 07 00 18和92 DB 07 00 17
答案内容由AI生成,仅供参考:
四、总结
目前知识库中没有直接针对“拔掉PCIe网卡收不到FDM信息”的根因结论,但结合FDM机制和IPMI命令链路信息,可以初步断定问题出在以下某一环节:BIOS未生成/未上报FDM记录 、命令通道与调试通道不匹配 、平台命令配置将命令屏蔽 ,或底层IPMI通信异常 。建议按照上述步骤逐步排查,重点确认BIOS是否实际发送了命令,以及发送所走的通道。
点击此处查看详细分析解答
根据您提供的问题描述和排查信息,结合知识库中的相关内容,对“拔掉PCIe网卡后有报错但收不到FDM信息”的问题进行如下分析。
一、FDM信息上报机制概述
FDM(Fault Detection and Management) 是BIOS级别的故障检测与管理组件,负责记录PCIe等硬件设备的错误事件,并在系统启动/重启时重置。
BIOS通过IPMI命令 将FDM故障信息上报给BMC,相关命令包括:
Set FDM Info(设置故障诊断特性辅助信息):NetFn 30h,CMD 92h,子命令 17h;
Set FDM errinfo(故障信息上报):NetFn 30h,CMD 92h,子命令 18h;
Get FDM Info(读取FDM相关信息):NetFn 30h,CMD 90h,子命令 55h。
您已在 platform.sr 中正确配置了上述命令字,并打开了IPMB调试日志,但 /tmp/ipmi.txt 中未捕获到 92 DB 07 00 17 和 92 DB 07 00 18 这两个命令请求,说明BMC侧没有收到BIOS上报的FDM信息。
二、可能原因分析
根据知识库中已有的相关信息,以下原因可能导致“收不到FDM信息”:
1. 监控通道不匹配
您打开的是 IPMB通道 的跟踪日志(traceipmi ... "ipmb"),但FDM信息上报可能并非通过IPMB通道传输。知识库中提到:
SetFDMInfoMultiSystemPCIeAddrInfo 命令是**通过带内通信(in-band)**在BIOS启动期间接收完整PCIe设备拓扑的;
traceipmi 命令可指定不同的通道(如 bt、kcs)进行跟踪。
因此,如果BIOS实际是通过带内通道(如KCS/BT)发送FDM命令,则在IPMB日志中自然搜索不到。
2. BIOS可能未触发FDM上报
FDM是BIOS级组件,在开机和重启过程中重置 。
您描述的是进入系统后热拔插 PCIe网卡,此时BIOS是否会产生FDM记录并主动上报,取决于FDM框架对该事件的处理逻辑。若该操作未触发BIOS的FDM错误上报流程,BMC就不会收到对应命令。
3. 命令被平台策略屏蔽
您在 platform.sr 中使用的是 RestrictedIPMICmdList(受限IPMI命令列表),且 ShiedFlag 字段值为 1。知识库中虽未明确说明该字段含义,但“受限命令列表”本身可能带有过滤或屏蔽机制,需确认该配置是否真正允许了这两个命令字,而非错误地将它们屏蔽。
4. 权限问题
知识库中提到,Get FDM Info、Set FDM Info 等命令需要 DiagnoseMgnt 权限。如果发起命令的会话或用户权限不足,BMC可能会拒绝处理。不过您的日志中连命令请求都未出现,说明命令可能未到达BMC或被更早的环节拦截。
5. 与已知IPMI命令失败现象的关联
知识库中存在类似问题的日志记录:
pcie_device ERROR: pcie_card.lua(190): get pci register info failed, error: 195
network_adapter ERROR: init.lua(83): get pci register info failed, error: 195
这说明在某些环境下,IPMI命令获取PCIe信息会失败(错误码195)。若FDM上报也依赖类似的IPMI链路,则可能因同一底层原因导致命令无法正常送达BMC。
三、建议的排查步骤
基于知识库中已有的方法,建议按以下方向继续定位:
扩大跟踪范围,确认命令是否走其他通道
使用 mdbctl 的 traceipmi 命令同时监控多个通道,例如:
mdbctl traceipmi start file bt
查看 /tmp/ipmi.txt 中是否有其他通道的IPMI消息记录。若命令确实存在但不在IPMB日志中,则说明通道判断有误。
主动查询BMC侧FDM记录
使用 Get FDM Info 命令主动查询FDM故障记录条数,确认BMC中是否已有FDM数据:
NetFn 30h,CMD 90h,子命令 55h,Command Type 01h(获取故障记录编号)。
如果主动查询也返回空,说明BIOS侧确实未产生FDM记录。
检查BIOS侧FDM上报条件
确认BIOS中FDM上报开关是否真正生效,以及热拔插事件是否满足FDM记录生成条件。知识库指出“是否需要更换要根据实际故障类型、故障场景综合考虑”,并非所有故障都会留下FDM记录。
核查 platform.sr 配置
核对 RestrictedIPMICmdList 中的 NetFunction、Command、Data 数组是否与实际BIOS发送的命令完全一致,并确认 ShiedFlag 等字段不会屏蔽命令接收。
关注BMC侧相关组件日志
查看 pcie_device、network_adapter 等组件的日志,是否存在类似 get pci register info failed, error: 195 的报错,以判断IPMI通信链路是否异常。
四、总结
目前知识库中没有直接针对“拔掉PCIe网卡收不到FDM信息”的根因结论,但结合FDM机制和IPMI命令链路信息,可以初步断定问题出在以下某一环节:BIOS未生成/未上报FDM记录 、命令通道与调试通道不匹配 、平台命令配置将命令屏蔽 ,或底层IPMI通信异常 。建议按照上述步骤逐步排查,重点确认BIOS是否实际发送了命令,以及发送所走的通道。
TraceIpmi无相关日志,说明BMC未接收到BIOS上报FDM信息,可向BIOS询问BIOS处前置动作(如开关等)是否完成