gpu适配带外管理获取温度失败问题分析
更新时间: 2026/05/30
在Gitcode上查看源码问题背景
- 单板类型:自研板;
- 软件版本:openUBMC 25.12;
- 涉及功能:GPU配置,GPU信息读取;
- 触发条件:手动发送命令读取温度。
- 业务表现:预期可以正常读取;实际读取失败。
问题复现步骤
适配一款gpu,命名GPU_X201,配置完sr的Chip之后尝试手动发命令获取温度,适配代码如下:
关键日志信息
chip写失败报错: 波形如下:
定位过程
- 手动写命令失败且出现bmc挂死,相关命令及挂死波形如下:
- 硬件厂家分析结果是读步骤时序问题,厂家时序如下: 发送读命令的时候,不能跟cmd,只能是地址+长度,查看bmc接口,chip:read后面必须跟cmd,len。厂家要求不跟cmd。
- Cmd传0进去,还是失败:
- busctl方式可以获取到正确信息:
- 发送先写再读命令还是失败: 目前看问题就在读的时候read 把0作为data发出去了,Bus接口只跟了5作为len,所以能发送成功。
- 尝试writeread接口,发现功能正常:
问题原因
该gpu卡的温度读写时序,匹配的手动读写接口为writeread,其他接口均不支持。
解决方案
读取数据时使用writeread接口。