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组件日志如下:

定位过程

  1. 查看ipmi_core组件日志中的返回"GetTpcmMeasureStatus not available",怀疑tcpm或者tcpm状态异常:
  2. 查看资源树信息,TPCM已经上树
  3. 尝试当我想attach tpcm,结果报错
text
  Resource is busy, module has already been attached or connection error occured
  1. 代码确认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命令在带内发送即可查询。