【已评审】新增私有对象,支持特定场景下防回退功能

背景

issue:暂无
软件防回退是BMC侧通过配置编码来阻止低版本升级包升级的功能,在满足防回退条件下,较早版本的升级包在升级时会被BMC识别,提示“过旧的升级包”并会中断升级流程。实行防回退主要是为了BMC、Bios、CPLD等版本能够配套使用,新特性不丢失。
当前缺少特定场景下(例如搭配特定板卡需要防回退,不搭配特定板卡无需防回退)的固件升级防回退能力。

1、新增私有对象,可根据实际场景配置在特定板卡CSR中,用于承载升级的FW类型和限制可以升级的最小revision。可精准匹配升级的FW,并将该对象的属性与hpm的upgrade.cfg中的revision比较,如果hpm比这个小,则不允许升级,达到选择性防回退的效果。

决策点(必填,一句话描述待决策点)

firmware_mgmt组件新增私有对象FirmwareLimit,用于承载升级的FW类型和限制可以升级的最小revision,达到选择性防回退的效果

详细描述(必填,描述待评审接口的详细内容)

1、新增私有对象FirmwareLimit

变化类型:新增私有对象

应用场景:用于承载升级的FW类型和限制可以升级的最小revision,达到选择性防回退的效果

持久化类型: 掉电持久化

操作权限:ReadOnly

详细描述:

属性名称 变化类型 签名 读写&权限 持久化 变化通知 接口说明 接口约束
ComponentID 新增属性 y 只读 R:ReadOnly 掉电持久化 false 组件ID,用于区分组件,且用作持久化主键 与FirmwareComponentInfo的ComponentID属性对应组件ID保持一致
ComponentIDEx 新增属性 u 只读 R:ReadOnly 掉电持久化 false 用于区分细分组件,且用作持久化主键 与FirmwareComponentInfo的ComponentIDEx属性对应组件ID保持一致,默认值0xFFFFFFFF
Name 新增属性 s 只读 R:ReadOnly 掉电持久化 false 固件名 与FirmwareComponentInfo的Name属性含义保持一致
RevisionNumber 新增属性 y 只读 R:ReadOnly 掉电持久化 false 限制可以升级的最小的revision,且用作持久化主键 跟hpm的upgrade.cfg中的revision比较,如果hpm比这个小,则不允许升级

会议结论

同意新增私有对象FirmwareLimit及属性,含义如下:

属性名称 变化类型 签名 读写&权限 持久化 变化通知 接口说明 接口约束
ComponentID 新增属性 y 只读 R:ReadOnly 掉电持久化 false 组件ID,用于区分组件,且用作持久化主键 与FirmwareComponentInfo的ComponentID属性对应组件ID保持一致
ComponentIDEx 新增属性 u 只读 R:ReadOnly 掉电持久化 false 用于区分细分组件,且用作持久化主键 与FirmwareComponentInfo的ComponentIDEx属性对应组件ID保持一致,默认值0xFFFFFFFF
Name 新增属性 s 只读 R:ReadOnly 掉电持久化 false 固件名 与FirmwareComponentInfo的Name属性含义保持一致
RevisionNumber 新增属性 y 只读 R:ReadOnly 掉电持久化 false 限制可以升级的最小的revision,且用作持久化主键 跟hpm的upgrade.cfg中的revision比较,如果hpm比这个小,则不允许升级

遗留问题

【预审意见】

  1. 不建议新增 FirmwareLimit 类来处理这类升级场景,对于固件的管理(包含升级,升级抑制功能)诉求,全部收编到 FirmwareComponentInfo 这个类上,当前这个类的 RevisionNumber 属性表征就是从硬件读取的信息判定的 RevisionNumber,确认是否能满足诉求?

已与9/10日对齐,同意新增