gpu适配带外管理获取温度失败问题分析
更新时间: 2026/05/30
在Gitcode上查看源码

问题背景

  • 单板类型:自研板;
  • 软件版本:openUBMC 25.12;
  • 涉及功能:GPU配置,GPU信息读取;
  • 触发条件:手动发送命令读取温度。
  • 业务表现:预期可以正常读取;实际读取失败。

问题复现步骤

适配一款gpu,命名GPU_X201,配置完sr的Chip之后尝试手动发命令获取温度,适配代码如下:

关键日志信息

chip写失败报错: 波形如下:

定位过程

  1. 手动写命令失败且出现bmc挂死,相关命令及挂死波形如下:
  2. 硬件厂家分析结果是读步骤时序问题,厂家时序如下: 发送读命令的时候,不能跟cmd,只能是地址+长度,查看bmc接口,chip:read后面必须跟cmd,len。厂家要求不跟cmd。
  3. Cmd传0进去,还是失败:
  4. busctl方式可以获取到正确信息:
  5. 发送先写再读命令还是失败: 目前看问题就在读的时候read 把0作为data发出去了,Bus接口只跟了5作为len,所以能发送成功。
  6. 尝试writeread接口,发现功能正常:

问题原因

该gpu卡的温度读写时序,匹配的手动读写接口为writeread,其他接口均不支持。

解决方案

读取数据时使用writeread接口。