【待评审】新增升级前预检查IPMI命令

背景

很多固件的升级会影响业务运行,客户在升级前会进行很多准备工作,且升级次数是有限的。
如果固件升级是,因为升级条件不具备、升级通道故障等导致升级失败,会导致客户升级前准备工作浪费,对客户的影响较大。
如果BMC提供升级前的检查接口,客户在升级准备工作前就可以做一下勘探,勘探到升级前检查有失败时,优先处理失败,这样就可以有效减少实际升级失败的影响。

关联ISSUE

暂无

整体方案

评审点 新增OEM IPMI命令,用于升级前预检查/查询结果

详细描述

命令名称: Prepare Update Check
命令说明: 启动升级前预检查
命令权限: BasicSetting
是否锁定之后可以访问:
是否有敏感数据:
命令样式:

  • 请求:ipmitool raw 0x30 <ManufacturerID> <SubCmd>
  • 响应:<ManufacturerID>

命令请求参数:

字节顺序 域取值说明
NetFn 30h
Cmd 93h
1:3 Manufacturer ID,LB Byte first。长度固定 3 个字节,例如,某厂家ID时 2011,对应十六进制为0x0007DB,则字节序为第1个字节为 DBh,第二个字节为 07h,第三个字节为 00h。
4 96h

命令响应参数:

字节顺序 域取值说明
1 Completion Code
2:4 Manufacturer ID,LB Byte first。长度固定 3 个字节,例如,某厂家ID时 2011,对应十六进制为0x0007DB,则字节序为第1个字节为 DBh,第二个字节为 07h,第三个字节为 00h。

命令示例:
样例:开始触发升级前预检查

  • 请求:ipmitool raw 0x30 0x93 0xdb 0x07 0x00 0x96
  • 响应:0xdb 0x07 0x00

命令名称: Prepare Update Check Status
命令说明: 获取升级前预检查结果
命令权限: ReadOnly
是否锁定之后可以访问:
是否有敏感数据:
命令样式:

  • 请求:ipmitool raw 0x30 <ManufacturerID> <SubCmd> <Index>
  • 响应:<ManufacturerID> <SubCmd> <Length> <Data>

命令请求参数:

字节顺序 域取值说明
NetFn 30h
Cmd 93h
1:3 Manufacturer ID,LB Byte first。长度固定 3 个字节,例如,某厂家ID时 2011,对应十六进制为0x0007DB,则字节序为第1个字节为 DBh,第二个字节为 07h,第三个字节为 00h。
4 97h
5:6 Index,固件索引

命令响应参数:

字节顺序 域取值说明
1 Completion Code
2:4 Manufacturer ID,LB Byte first。长度固定 3 个字节,例如,某厂家ID时 2011,对应十六进制为0x0007DB,则字节序为第1个字节为 DBh,第二个字节为 07h,第三个字节为 00h。
5:6 Length,支持升级前预检查的固件总个数
7 ComponentIdentifierLength,固件唯一标识长度
8:N 固件唯一标识
N+1 固件升级前预检查结果:0 - 固件健康 1 - 固件当前不支持升级 0xff - 固件在检查中

命令示例:
样例1:查询升级前预检查结果

  • 请求:ipmitool raw 0x30 0x93 0xdb 0x07 0x00 0x97 0x00 0x01
  • 响应:0xdb 0x07 0x00 0x01 0x00 0x12 0x42 0x43 0x55 0x31 0x43 0x70 0x75 0x42 0x6f 0x61 0x72 0x64 0x31 0x43 0x50 0x4c 0x44 0x31 0x00
  • 支持升级前预检查的固件总共有一个,固件唯一标识长度为18,固件唯一标识为BCU1CpuBoard1CPLD1,预检查结果为固件健康

评审结论

遗留问题