ipmi命令获取TPCM度量值失败问题分析
更新时间: 2026/05/30
在Gitcode上查看源码问题背景
- 单板类型:自研板;
- 软件版本:openUBMC 25.06;
- 涉及功能:ipmi,TCM芯片;
- 触发条件:不带tcm芯片的条件下,通过ipmi命令获取TPCM度量值。
- 业务表现:预期可获取;实际返回0xF1报错。
问题复现步骤
远程主机还是在OS下,在执行GetTpcmMeasureStatus的Ipmi命令:
bash
ipmitool -C 17 -I lanplus -U xxx -P 'xxx' -H 192.xxx.xx.xx raw 0x30 0x92 0xDB 0x07 0x00 0x59 0x00 0x02
Unable to Send RAW command (channel=0x0 netfn=0x30 lun=0x0 cmd=0x92 rsp=0xf1): Unknown(0XF1)关键日志信息
ipmi_core组件日志如下:
定位过程
- 查看ipmi_core组件日志中的返回"GetTpcmMeasureStatus not available",怀疑tcpm或者tcpm状态异常:
- 查看资源树信息,TPCM已经上树
- 尝试当我想attach tpcm,结果报错
text
Resource is busy, module has already been attached or connection error occured- 代码确认TPCM功能实现逻辑,结果为当tcm芯片不存在时,未注册tpcm相关ipmi命令的回调handler函数的情况下会导致出现0XF1未知错误,具体为TPCM模块依赖TCM芯片,因此能使用TPCM模块功能的前提为BMC插卡上有TCM芯片,也就是说BMC插卡上没有TCM芯片,这些IPMI命令就用不了;
问题原因
环境上没有TCM芯片;TPCM模块依赖TCM芯片,因此能使用TPCM模块功能的前提为BMC插卡上有TCM芯片,代码的方法实现里判断了是否存在TCM芯片,没有就会抛错,而且该GetTpcmMeasureStatus的Ipmi命令命令只支持带内发送。
解决方案
设备安装TCM芯片,且对应的ipmi命令在带内发送即可查询。