测试MCX623436AN-CDAB热插拔功能时
点击热插拔操作后,产生了温度异常告警:
BMC查看温度读值
我理解点击热插拔操作后,应该是给OCP riser进行了断电操作,不应该能够再获取到温度值,不知道180这个值从哪来的,测试多次,都会产生这个180固定值
测试MCX623436AN-CDAB热插拔功能时
答案内容由AI生成,仅供参考:
| 项目 | 分析结论 |
|---|---|
| 现象 | 热插拔后出现“超温”告警 |
| 根本原因 | 断电后传感器仍返回固定值180,状态未置为不可访问 |
| 根源机制 | 驱动/BMC中间层未正确处理设备离线状态,返回虚假有效值 |
| 风险点 | 导致误报严重告警,影响运维判断 |
| 解决方案 | 1. 修复Status状态判断 2. 增加电源状态过滤 3. 屏蔽热拔期间告警 |
建议动作:
联系BMC开发团队检查Scanner_NIC_Lm75模块的异常处理逻辑,并在openUBMC中提交缺陷单进行修复。
在对 MCX623436AN-CDAB 网卡执行热插拔操作后,系统出现了OCP卡温度异常告警。实际监测到温度读值为180(对应122°C),超出了105°C的过温阈值,触发了轻微和严重级别的告警。
值得注意的是,用户预期在执行热插拔操作(即通知式断电)后,OCP riser 应已断电,理论上不应再能获取到有效的温度数据。然而系统仍读取到了一个固定的 180 值,表明存在异常行为。
根据提供的信息,该网卡具体信息如下:
此网卡为 Mellanox ConnectX-6 Dx 系列产品,支持 OCP(Open Compute Project)标准,具备热插拔能力。
0x08000003“The OCP Card 5 (MXC623436AN-CDAB) OCP temperature (122 degrees C) exceeds the overtemperature threshold (105 degrees C).”
执行命令查看传感器状态:
% lsprop Scanner_NIC_Lm75_0101030B08
返回结果显示:
Status=0:表示传感器访问正常(成功通信)Value=180:原始寄存器读数Offset=1,Size=1,Type=0:配置表示从指定地址偏移1字节读取1字节温度值该原始值 180 会被转换为摄氏温度(通常为带符号8位整数),即:
矛盾点:热插拔后理应断电,但传感器仍可访问且返回固定值180,严重违背硬件逻辑。
结合知识库信息及现象,可能的原因如下:
尽管执行了“热插拔”操作,其本质是通过BMC向Riser板CPLD发送指令进行“通知式断电”,但以下情况可能导致电源未真正关闭:
CardPowerGood然而,即使电源未完全切断,也不应返回固定不变的180值,这更倾向于伪数据或默认值。
Scanner_NIC_Lm75 使用的是 LM75 类型温度传感器,其数据存储于 I²C 设备寄存器中。若设备断电或未响应,正常情况应出现:
Status ≠ 0Value 不应更新或保持上次缓存值但当前 Status=0 且 Value=180,说明:
在相关文档(如ID=1)中提到:
Scanner_NIC_Lm75 status表示是否可以访问 LM75。当电源断开时,应无法访问。若Status=0却读出固定值,表明硬件层面访问失败但软件未正确处理异常。
最可能的解释是:
hwproxy 或 kepler 组件在扫描失败时,未将 Status 设置为错误,反而返回了上次缓存值或默认值 180此外,测试中“多次都返回180”这一现象进一步支持这是一个固定兜底值或初始化默认值,而非真实测量。
根据知识库文档:
"Event_TempFail": {
"Reading": "<=/Scanner_NIC_Lm75.Status; <=/Scanner_CardPowerGood.Value |> expr($2 == 0 ? 0 : $1)"
}
该表达式意为:当 CardPowerGood = 0(断电)时,忽略温度不可访问的问题,不触发告警。
但当前触发的是 “超温”告警,而非“读取失败”告警,说明:
Status=0 且 Value=180,系统误判为真实高温
结论:真正的Bug在于——断电后仍返回“有效”温度读数,导致防护机制失效。
scanner 模块行为:当检测到设备断电或I²C通信失败时,必须设置 Status ≠ 0Value在“超温”告警判断前,增加对以下状态的校验:
if Scanner_CardPowerGood.Value == 0 then
-- 卡已断电,忽略所有传感器告警
return false
end
在 network_adapter 组件中,点击热插拔后设置 ReadyToRemove = true,此时应:
建议执行底层命令验证设备是否存在:
i2cget -y -f <bus> 0x3E
(LM75默认地址为0x48~0x4F,此处Chip_NICTempChip地址为62即0x3E)
预期结果:
Connection timed out 或 NACK| 项目 | 分析结论 |
|---|---|
| 现象 | 热插拔后出现“超温”告警 |
| 根本原因 | 断电后传感器仍返回固定值180,状态未置为不可访问 |
| 根源机制 | 驱动/BMC中间层未正确处理设备离线状态,返回虚假有效值 |
| 风险点 | 导致误报严重告警,影响运维判断 |
| 解决方案 | 1. 修复Status状态判断 2. 增加电源状态过滤 3. 屏蔽热拔期间告警 |
建议动作:
联系BMC开发团队检查Scanner_NIC_Lm75模块的异常处理逻辑,并在openUBMC中提交缺陷单进行修复。