背景
背景:通过在生产环节全面检测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,只更换某块单板,装备要求每次检测后清除本次检测结果。
评审点
- 新增ipmi接口清除自检结果
- 新增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
评审结论
-
评审点一:同意新增IPMI命令Clear Cpld Space Test Result,用于支持清除检测结果,此命令仅装备阶段使用。
NetFn:0x30
Cmd:0x90
SubCmd:0x83
请求和响应参数见详细描述。 -
评审点二:同意新增IPMI命令 Get Cpld Space Test Result Information,用于查询全检结果信息,采用方案二。仅装备阶段使用。
NetFn:0x30
Cmd:0x90
SubCmd:0x84
请求和响应参数见详细描述。
遗留问题
- 需要确认 ComponentType 和 预留位 各 1 个字节够不够,是否和 PLDM 规范的 ComponentType 在定义上有冲突。
结论:已经确认,当前 ComponentType 和 预留位 合并,使用 4Byte,并且 bit31 进行标识是否是 PLDM 规范的 ComponentType。