【已评审】VirtualVPDConnect 下新增私有属性 RefVpdConnector

背景

新增支持对物理盘槽位的上下电控制功能。

槽位上下电的前序方案已评审通过:

14140224_VPD_0.sr 的加载条件是 ComVPDConnect 的 Presence 表达式(在位 == 1 && PCIeType == 1),只看物理在位信号,不看槽位电源。CPLD 断电不改变在位信号,因此槽位下电后 VPD_0.sr 仍处于加载状态,由此产生连锁问题:

  1. 盘断电后 VPD Chip(I2C 0xA6)不可达,但 VPD_0.sr 内的 Scanner_SSD_ReadVPDFail 仍按 5s 周期扫描——扫描器区分不了"断电"与"芯片故障";

  2. 每次读取必然失败,8 次失败防抖(8×5s≈40s)后 Event_VPDReadFail 必然触发 Disk.VPDReadFail 告警;

  3. 该告警的消除条件是 Scanner 恢复读成功(即槽位重新上电)或拔盘(子树整体卸载)——保持的下电状态会持续挂着一个无法消除的硬件异常告警;

为此在 VirtualVPDConnect 下新增 RefVpdConnector 引用,将 VPD事件移到专用 Connector_Vpd的下级(加载新拆分的 14140224_VPD_Event.sr),上下电时同步其 Presence:下电即停止加载Connector_Vpd下挂sr文件(停止扫描、抑制误报),上电自动恢复加载。

下电(Presence=0):三个 Connector 无条件卸载。
    卸载不依赖 AuxId,天然安全;且是消除断电期间 VPDReadFail 误报的关键路径。

上电(Presence=1):
    RefVpdConnector  → 直接恢复加载(AuxId 固定为 Event,无识别问题);
    RefConnector     → 仅当 AuxId ≠ 255(协议已识别)时恢复;否则不动,
                       交回 vpd_connector 既有 init 检测流程(检测成功后置 1);
    RefPolicyConnector → 同上(AuxId ≠ 255 即厂商已识别时恢复)。

评审点

  1. VirtualVPDConnect 下新增 RefVpdConnector 属性
  2. Drive 下新增私有属性 SlotPowerStateReg

详细描述

  1. VirtualVPDConnect 下新增 RefVpdConnector 属性

变化类型:新增属性

变更类型 属性名称 签名 只读 变化通知 默认值 属性描述 属性来源 持久化类型
新增属性 RefVpdConnector U8[] True false 空 引用 Connector_Vpd 对象。槽位上下电时由 storage 组件同步该 Connector 的 Presence,控制 VPD 事件子树(14140224_VPD_Event.sr)的加载/卸载:下电卸载后 Scanner_SSD_ReadVPDFail 停止扫描,避免 Disk.VPDReadFail 误报;上电自动恢复。 CSR 不持久化
  1. Drive 下新增私有属性 SlotPowerStateReg

变化类型:新增属性
应用场景:BMC设置物理盘槽位电源状态

变更类型 属性名称 签名 只读 变化通知 默认值 属性描述 属性来源 持久化类型
新增属性 SlotPowerStateReg y (U8) False false 空 关联物理盘槽位电源控制Accessor寄存器。0:下电,1:上电 CSR 不持久化

实现举例:

"Drive_1": {
    "SlotPowerState": " <=/Scanner_Drive0PowerState.Value",
    "SlotPowerStateReg": "#/Accessor_Drive0PowerStateControl.Value",
.....
}

评审结论

  1. 同意在VirtualVPDConnect 下新增 RefVpdConnector 属性
  2. 同意在Drive下新增私有属性SlotPowerStateReg 属性

遗留问题

  1. 注意在ipmi资料中说明操作风险