【已评审】CPLD全资源检测——新增IPMI命令支持清除检测结果;新增IPMI命令查询全检结果

背景

背景:通过在生产环节全面检测CPLD是否故障,降低CPLD在现网出现问题的概率,故进行CPLD全资源空间检测。

检测方法:装备调用脚本启动资源全检TU,将hpm包发送给BMC;BMC解析hpm包后,根据update.cfg配置信息,轮询筛选整机中需要升级的组件。每个升级文件都直接升级至CPLD的ram,每次升级完后,检测代码立即生效,检测结果会按照事先约定好的GPIO或smc命令字发送给BMC,BMC持久化检测结果。装备通过IPMI指令收集所有检测结果。

现状:当前已有Ipmi命令,能够查询CPLD全检结果:

命令名称: Get Cpld Space Test Result
命令说明: 获取CPLD全资源检测结果

命令样式:

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

命令请求参数:

字节顺序 域取值说明
NetFn 30h
Cmd 90h
1 SubCmd,固定为 66h

命令响应参数:

字节顺序 域取值说明
1 Completion Code
2 CPLD Number,返回的CPLD自检结果总数,未全检过的环境为0
3 Result,第N-2片检测结果:OK(0),NOK(1),Cpld not support(2),Testing(3)

当前仅检测基础板与扩展板,数量较少,装备可以通过数量、固定顺序判断CPLD可扩展性、定位性差。

全检范围扩大后,包括风扇板和多种背板,配置较多且灵活,同时需要考虑主板堆叠场景,装备无法从响应体直观获取到哪片CPLD检测失败。

因此需要扩展原有IPMI命令,增加每个结果的单板、槽位。

并且覆盖散备件的测试,该场景下不更换BMC,只更换某块单板,装备要求每次检测后清除本次检测结果。

评审点

  1. 新增ipmi接口清除自检结果
  2. 新增ipmi接口,支持同时获取获取CPLD全资源检测结果和对应CPLD信息

评审点1: IPMI 新增命令清除CPLD全资源检测结果

命令名称: Clear Cpld Space Test Result
命令说明: 清除CPLD全资源检测结果
命令权限: BasicSetting
是否锁定之后可以访问:
是否有敏感数据:

命令样式:

  • 请求:ipmitool raw 0x30 0x90 <SubCmd> <ComponetType> <Slot>
  • 响应:<CompletionCode>

命令请求参数:

字节顺序 域取值说明
NetFn 30h
Cmd 90h
1 SubCmd,固定为 83h
2:5 Component Type, LS Byte first,单板类型。
[31]:设备类型标识符类型
0-设备类型标识符参考DMTF规范文档DSP0249中PLDM Entity ID Code tables的定义,1- 设备类型标识符参考表 设备类型(Component Type)定义。
[16:30]:reserved。默认值为0
[0:15]:设备类型标识符。当前使用Component Type对应单板类型: BCU: 0xC0,EXU: 0xC1,SEU: 0xC2, CLU: 0xC4,0xFF:未指定,即全部
6 Slot,单板槽位。ComponetType指定单板类型,Slot指定单板槽位,如BCU2。默认值(0xFF)时清除指定单板类型所有全检结果。

命令响应参数:

字节顺序 域取值说明
1 Completion Code,比如:00h = 【标准完成码】命令响应成功

命令示例:

样例1: 清除所有CPLD全资源检测结果

  • 请求:ipmitool raw 0x30 0x90 0x83 0xFF 0x00 0x00 0x80 0xFF

  • 响应:00

  • 样例2: 清除基础板对应的所有CPLD全资源检测结果

  • 请求:ipmitool raw 0x30 0x90 0x83 0xC0 0x00 0x00 0x80 0xFF

  • 响应:00

样例3: 清除在槽位2上的基础板对应的所有CPLD全资源检测结果

  • 请求:ipmitool raw 0x30 0x90 0x83 0xC0 0x00 0x00 0x80 0x02
  • 响应:00

评审点2: 新增IPMI命令获取CPLD全资源检测结果及对应CPLD信息

方案一:

命令名称: Get Cpld Space Test Result Information
命令说明: 查询CPLD全资源检测结果信息
命令权限: ReadOnly
是否锁定之后可以访问:
是否有敏感数据:

命令样式:

  • 请求:ipmitool raw 0x30 0x90 <SubCmd>
  • 响应:<CompletionCode> <ResultCount> <ComponentType> <Reserved> <Slot> <CpldIndex> <TestResult>

命令请求参数:

字节顺序 域取值说明
NetFn 30h
Cmd 90h
1 SubCmd,固定为 84h

命令响应参数:

字节顺序 域取值说明
1 Completion Code
2 ResultCount,返回的CPLD自检结果总数,未全检过的环境为0,未清除则返回上一次结果。
3 ComponentType,指定CPLD所在的板卡类型,与ComponetType对应: BCU: 0xC0,EXU: 0xC1,SEU: 0xC2, CLU: 0xC4,0xFF:未指定,即全部
4 Reserved,预留字段。默认值为0xFF。
5 Slot。指定CPLD所在的板卡槽位,如BCU2_CPLD1,即为2
6 CpldIndex。指定CPLD所在的板卡的CPLD编号,如BCU2_CPLD1,即为1,表示第一片CPLD
7 TestResult。指定CPLD对应的检测结果:OK(0),NOK(1),Cpld not support(2),Testing(3)
5N: 5N+ 2 第N个全检CPLD的结果及CPLD信息,格式参照第一个。

命令示例:

样例1: 查询CPLD全资源检测结果及对应CPLD信息

  • 请求:ipmitool raw 0x30 0x90 0x84
  • 响应:03 C0 00 01 01 00 C0 00 01 02 00 C1 00 01 01 00

方案二:

命令名称: Get Cpld Space Test Result Information
命令说明: 查询CPLD全资源检测结果信息
命令权限: ReadOnly
是否锁定之后可以访问:
是否有敏感数据:

命令样式:

  • 请求:ipmitool raw 0x30 0x90 <SubCmd> <ComponetType> <Slot>
  • 响应:<CompletionCode> <ResultCount> <Slot> <CpldIndex> <TestResult>

命令请求参数:

字节顺序 域取值说明
NetFn 30h
Cmd 90h
1 SubCmd,固定为 84h
2:5 Component Type, LS Byte first,单板类型。
[31]:设备类型标识符类型
0-设备类型标识符参考DMTF规范文档DSP0249中PLDM Entity ID Code tables的定义,1- 设备类型标识符参考表 设备类型(Component Type)定义。
[16:30]:reserved。默认值为0
[0:15]:设备类型标识符。
当前使用Component Type对应单板类型: BCU: 0xC0,EXU: 0xC1,SEU: 0xC2, CLU: 0xC4,查询时必须指定单板类型。
6 Slot,单板槽位。ComponetType指定单板类型,Slot指定单板槽位,如BCU2。默认值(0xFF)时查询指定单板类型所有全检结果。

命令响应参数:

字节顺序 域取值说明
1 Completion Code
2 ResultCount,上一次全检对应ComponetType类型的CPLD自检结果总数。 未全检过的环境、或环境上对应ComponetType的CPLD未全检则为0。
3 Slot,单板槽位。全检结果对应的单板所在槽位,如BCU2_CPLD1,即为2
4 CpldIndex。指定CPLD所在的板卡的CPLD编号,如BCU2_CPLD1,即为1,表示第一片CPLD
5 TestResult。指定CPLD对应的检测结果:OK(0),NOK(1),Cpld not support(2),Testing(3)
3N: 3N+ 2 第N组全检CPLD的结果及CPLD信息,格式参照第一组。

命令示例:

样例1: 查询基础板对应的所有CPLD全资源检测信息

  • 请求:ipmitool raw 0x30 0x90 0x84 0xC0 0x00 0x00 0x80 0xFF
  • 响应:02 01 01 00 01 02 00

样例2: 查询在槽位2上的基础板对应的所有CPLD全资源检测信息

  • 请求:ipmitool raw 0x30 0x90 0x84 0xC0 0x00 0x00 0x80 0x02
  • 响应:01 02 01 00

评审结论

  1. 评审点一:同意新增IPMI命令Clear Cpld Space Test Result,用于支持清除检测结果,此命令仅装备阶段使用。
    NetFn:0x30
    Cmd:0x90
    SubCmd:0x83
    请求和响应参数见详细描述。

  2. 评审点二:同意新增IPMI命令 Get Cpld Space Test Result Information,用于查询全检结果信息,采用方案二。仅装备阶段使用。
    NetFn:0x30
    Cmd:0x90
    SubCmd:0x84
    请求和响应参数见详细描述。

遗留问题

  1. 需要确认 ComponentType 和 预留位 各 1 个字节够不够,是否和 PLDM 规范的 ComponentType 在定义上有冲突。
    结论:已经确认,当前 ComponentType 和 预留位 合并,使用 4Byte,并且 bit31 进行标识是否是 PLDM 规范的 ComponentType。