背景
系统上电后,PCIE 标卡可能出现无法建链的场景:硬件显示设备在位,但 BIOS 未上报该设备的 BDF 信息。当前 BMC 缺少对此类"硬件在位但软件无法识别"场景的掉卡检测能力。
关联 ISSUE
issue:暂无
整体方案
1、新增私有对象 HardwareMismatch,属性包含:HardwarePresence(硬件在位状态)、SoftwarePresence(软件使能状态)、IntervalSecond(检测周期,单位:秒)、AssertionThreshold(防抖阈值)、ComponentType(监控的部件类型)、Slot(待检测器件在父级器件的槽位号),用于检测硬件在位但软件无法识别的掉卡场景。
评审点
1、是否新增私有对象 HardwareMismatch,用于 "硬件在位但软件无法识别"场景的掉卡检测。
详细描述
1、新增私有对象 HardwareMismatch
配置示例:
"HardwareMismatch_1": {
"HardwarePresence": "#/Accessor_Slot1Presence.Value",
"SoftwarePresence": "#/Connector_PCIE_SLOT1.Presence",
"IntervalSecond": 600,
"DebounceThreshold": 10,
"Slot": 1,
"ComponentType": 8
},
-
变化类型:新增私有对象
-
应用场景:用于检测硬件在位但软件无法识别的设备掉卡场景
-
持久化类型:不持久化
-
操作权限:ReadOnly
详细描述
| 属性名称 | 变化类型 | 签名 | 读写&权限 | 持久化 | 变化通知 | 属性约束 | 含义 |
|---|---|---|---|---|---|---|---|
| HardwarePresence | 新增属性 | y |
R:ReadOnly | 不持久化 | false | CSR 提供 默认值255 | 硬件在位状态:1=在位,0=不在位 |
| SoftwarePresence | 新增属性 | y |
R:ReadOnly | 不持久化 | false | CSR 提供 默认值255 | 软件在位状态:1=软件识别到设备,0=未识别 |
| IntervalSecond | 新增属性 | q |
R:ReadOnly | 不持久化 | false | CSR 提供,默认 600s | 检测周期,单位秒 |
| DebounceThreshold | 新增属性 | y |
R:ReadOnly | 不持久化 | false | CSR 提供,默认 10 | 防抖次数:连续异常达到此数才触发告警,避免瞬时抖动误报 |
| Slot | 新增属性 | y |
R:ReadOnly | 不持久化 | false | CSR 提供 | 待检测器件在父级器件的槽位号 |
| ComponentType | 新增属性 | y |
R:ReadOnly | 不持久化 | false | CSR 提供 | 监控的部件类型 |
评审结论
1、同意新增私有对象 HardwareMismatch(原提议名称 DetectHardware),用于检测"硬件在位但软件无法识别"的掉卡场景。
2、同意对象包含 6 个属性:HardwarePresence、SoftwarePresence、IntervalSecond、DebounceThreshold、Slot、ComponentType;去除原方案中的 DetectStatus 属性。
3、同意属性命名调整:AssertionThreshold 改为 DebounceThreshold(直观表达防抖次数语义),SensingInterval 改为 IntervalSecond(明确单位为秒)。
遗留问题
1、对象名需重新考虑:原方案提议命名为 DetectHardware,评审认为该名称偏向"检测硬件是否在位"的语义,未能体现"硬件在位但软件无法识别"这一核心场景。经讨论,最终定为 HardwareMismatch,表达"硬件与软件状态不一致"的含义。
2、去掉 DetectStatus 属性:原方案设计了 DetectStatus 属性(用于存储检测状态),评审认为 mismatch 的判定由 HardwarePresence 与 SoftwarePresence 对比即可得出,无需额外暴露一个中间状态属性,内部状态由代码本地变量管理,最终方案删除了该属性。
3、新增 Slot 属性:原方案未包含槽位信息。评审指出,告警触发时需要明确告知运维人员故障发生在哪个物理槽位,否则多条同类告警无法区分。最终方案新增 Slot 属性,记录待检测器件在父级器件的槽位号。
4、AssertionThreshold 重命名:原属性名 AssertionThreshold(沿用 IPMI 平台事件告警术语),评审认为该命名无法直观看出是"防抖次数"。最终改为 DebounceThreshold,语义更清晰。
5、SensingInterval 改为 IntervalSecond:原属性名 SensingInterval 未体现单位信息。评审要求改为 IntervalSecond,明确单位为秒,与命名规范中对时间属性带单位的惯例保持一致。