【已评审】新增资源协作接口管理PCIe卡热插拔

背景

OCP卡通知式热插拔能力依赖扩展板或者Riser卡能力,但是当前OCP热插拔相关属性配置在卡的CSR上,不合理,应该改为配置在对应的单板上

"Accessor_ReadyToRemove": {
    "Chip": "#/Smc_ExpBoardSMC",
    "Offset": "${Slot} |> expr(($1 == 1) ? 469772801 : 469772802)",
    "Size": 1,
    "Mask": 2,
    "Type": 0,
    "Value": 0
},
"NetworkAdapter_1": {
    ...
    "SlotNumber": "${Slot}",
    "Position": "EXU",
    "ReadyToRemoveValue": "#/Accessor_ReadyToRemove.Value",
    "CardPowerGood": "<=/Scanner_NIC1PowerGood.Value;<=/Scanner_NIC2PowerGood.Value |> expr((${Slot} == 1) ? $1 : $2)"
}

决策点

方案一:
在interface : bmc.kepler.Systems.PCIeDevices.PCIeAddrInfo下,新增属性PowerControl,PowerState

属性名称 签名 默认值 操作权限 说明 持久化 变化通知 备注
PowerControl y 不涉及 读写。R: ReadOnly。W: BasicSetting 槽位的电源按键,设置为1表示槽位电源关闭
PowerState y 0 只读。R: ReadOnly 槽位电源供电状态,0:不供电 1:供电

方案二:
新增path,interface,属性,方法
path:/bmc/kepler/Systems/:SystemId/PCIeSlots/:Id
interface:bmc.kepler.Systems.PCIeSlot
属性 SlotId,ComponentType,PowerState
方法 PowerControl

属性名称 签名 默认值 操作权限 说明 持久化 发送变化通知 备注
SlotId y 不涉及 只读。R: ReadOnly。 槽位号,在csr中配置
SupportedComponentTypes ay 不涉及 只读。R: ReadOnly 槽位支持的组件类型,在csr中配置,元素取值范围与资源协作接口bmc.kepler.Systems.Component的Type属性一致
PowerState string 空字符串 只读。R: ReadOnly 槽位供电状态,Off:不供电 On:供电
方法名称 变化类型 请求签名 请求参数说明 响应签名 响应参数说明 访问权限 说明 备注
PowerControl 方法 s Off:设置为Off表示槽位电源关闭;On:设置为On表示槽位电源开启 不涉及 不涉及 Basicsetting

整体方案

通过卡的槽位和组件信息,匹配PCIeSlot对象,调用对象的PowerControl方法,写Off关闭槽位电源。

评审结论

使用方案二,同意新增如下资源协作对象和接口、属性和方法
新增path:/bmc/kepler/Systems/:SystemId/PCIeSlots/:Id
新增interface:bmc.kepler.Systems.PCIeSlot
新增属性:

属性名称 签名 默认值 操作权限 说明 持久化 发送变化通知 备注
SlotId y 不涉及 只读。R: ReadOnly。 槽位号,在csr中配置
SupportedComponentTypes ay 不涉及 只读。R: ReadOnly 槽位支持的组件类型,在csr中配置,元素取值范围与资源协作接口bmc.kepler.Systems.Component的Type属性一致
PowerState string 空字符串 只读。R: ReadOnly 槽位供电状态,Off:不供电 On:供电

新增方法

方法名称 变化类型 请求签名 请求参数说明 响应签名 响应参数说明 访问权限 说明 备注
PowerControl 方法 s Off:设置为Off表示槽位电源关闭;On:设置为On表示槽位电源开启 不涉及 不涉及 Basicsetting

遗留问题

1、控制PCIe槽位上下电的属性建议改成方法,且不应绑定Accessor
结论:新增PowerControl方法,通过参数控制槽位上下电状态
2、PowerSupplyStatus属性命名尽量与整机电源状态保持一致,并且说明清楚取值变化场景
结论:PowerSupplyStatus改为PowerState。当卡热拔出时,槽位电源关闭,槽位供电状态,由On(供电)变为Off(不供电)。
3、考虑新增PCIeSlot类逐步替代PcieAddrInfo类
结论:新增PCIeSlot类