【已评审】新增私有对象HardwareMismatch,支持 PCIE 标卡掉卡检测

背景

系统上电后,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 个属性:HardwarePresenceSoftwarePresenceIntervalSecondDebounceThresholdSlotComponentType;去除原方案中的 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,明确单位为秒,与命名规范中对时间属性带单位的惯例保持一致。