背景
客户有需求,需要在现网BMC版本的IPMI命令中支持 AC cycle 功能。
差距: 目前 openUBMC 仅有资源协作接口支持 AC cycle 功能,无对应的IPMI命令支持。
评审点
整体方案:AC Cycle 由于操作影响面很大,因此属于受限提供功能。具体如下:
- 需要 fructrl 组件资源协作接口提供AC功能使能接口,在使能的情况下才能执行 AC cycle 的IPMI命令
- 需要 fructrl 组件注册和实现IPMI命令,实现 AC cycle 的功能;如果 fructrl 组件的 AC cycle 功能使能为 Disabled 状态(默认状态),则IPMI响应码返回
0xD5(Command not supported in present state)
评审点1:fructrl 支持AC功能使能
path: /bmc/kepler/Systems/:SystemId/FruCtrl
interface: bmc.kepler.Systems.FruCtrl
新增属性:ACCycleEnabled
项 | 取值说明 |
---|---|
属性名称 | ACCycleEnabled |
属性类型 | Boolean |
属性类型 | rw |
属性权限 | read:ReadOnly write:PowerMgmt |
属性持久化 | 掉电持久化 |
是否发送通知 | false |
属性来源 | 由代码直接写值 |
属性说明 | AC功能是否使能,默认为false,使能之后可以使用北向接口进行 AC cycle 操作 |
其他说明 | 设置之后需要记录操作日志,日志内容为:Set chassis AC cycle enabled |
评审点2:fructrl 支持IPMI命令执行 AC cycle 操作
IPMI命令: ipmitool raw 0x00 0x02 {option}
请求参数:
字节顺序 | 取值说明 |
---|---|
1 | NetFn,Chassis 00h,固定值 |
2 | Cmd,02h,固定值 |
3 | option,机框控制的选项,取值有: [7:4] reserved [3:0] option,取值如下: 0h=power down 1h=power up 2h=power cycle(optional) 3h=hard reset 4h=pulse Diagnostic Interrupt(optional) 5h=Initiate a soft-shutdown os OS via ACPI(optional) 6h=graceful power cycle(extend, optional) 7h=AC cycle(extend, additional, optional) |
响应参数:
字节顺序 | 取值说明 |
---|---|
1 | Completion Code |
Note: option 7h can be executed additionally while the AC cycle function is enabled. The completion code 0xD5(Command not supported in present state) while the AC cycle function is disabled
使用实例
- 请求:
ipmitool raw 0x00 0x02 0x07
- 响应:
空
评审结论
通过,具体评审结论如下:
- 同意在资源协作接口
bmc.kepler.Systems.FruCtrl
下新增属性ACCycleEnabled
,属性为可读写,权限为read:ReadOnly; write:PowerMgmt
;属性是掉电持久化,默认值为false
- 同意新增 ACCycle 的IPMI命令,NetFn 为 Chassis 00h, Cmd 为 02h,扩展对应的 option 为 07h,表征 AC Cycle 操作