答案内容由AI生成,仅供参考:
支持 Standby 供电的 Riser 卡如何控制 PCIe 槽位上下电
根据提供的背景与文档信息,针对支持 S5 独立供电的 Riser 卡(UID: 00000001040302023942),实现对 PCIe 槽位的独立上下电控制,其控制方式和实现机制如下。
背景总结
- 目标:实现对 DPU 卡的 S5 状态独立供电,并支持整卡上下电操作。
- 硬件配置:使用支持 Standby 供电的 Riser 卡,允许服务器在主电源关闭(S5)状态下,仍为插在 Riser 上的 PCIe 卡(如 DPU 卡)提供供电。
- 需求核心:客户要求具备 独立控制 PCIe 槽位上下电 的能力,以实现按需启停 DPU 卡。
控制方式:通过 PCIeSlot 对象新增 PowerControl 方法实现,不依赖 Pca9555 寄存器或 CPLD 直接控制
1. 控制主体:资源协作接口 bmc.kepler.Systems.PCIeSlot
根据文档 【已评审】新增资源协作接口管理PCIe卡热插拔 中的说明:
“新增方法 PowerControl,通过参数控制槽位上下电状态。”
这意味着:
- PCIe 槽位的上下电控制已抽象为标准接口:
PCIeSlot.PowerControl(On | Off)。 - 该方法为软件层面的标准接口,由 BMC(通过 Bmc Kepler 平台)统一管理。
- 实现层面是通过配置
PCIeSlot对象的PowerControl方法来触发底层硬件动作。
{
"接口": "bmc.kepler.Systems.PCIeSlot",
"方法": "PowerControl",
"参数": "On / Off",
"说明": "设置槽位电源状态。On:供电;Off:断电"
}
2. 底层执行:可能由 CPLD 或专用电源控制器实现,而非 Pca9555
虽然 Riser 卡上常集成 Pca9555 作为 GPIO 扩展器,但根据上下文分析:
Pca9555主要用于 I/O 信号监测和控制(如写保护、板 ID 读取、电压告警),不具备主电源通断控制能力。
关键证据:
Pca9555被描述为 GPIO 扩展芯片,用于数字输入/输出控制(I²C I/O expander)。- 在 Riser 卡上的典型应用包括:
- 读取 PCB ID(通过
Accessor_PcbID) - 监控 3.3V 电压状态(
Event_Riser3V3Event) - 控制 Eeprom 写保护(
Accessor_IEUWP)
- 读取 PCB ID(通过
- 文档中明确指出,电源控制需新增独立属性或方法,而非复用现有 GPIO 控制逻辑。
排除 Pca9555 作为电源主控的原因:
- 无任何文档提及
Pca9555可直接驱动大电流电源通断。 - 其 I²C 地址
0x4c和功能定位为信号管理,非电源开关控制器。
更合理的实现方式:扩展板 CPLD 或专用电源管理 IC
- Riser 卡上的 CPLD 可编程实现电源时序控制。
- 支持 Standby 供电的 Riser 卡通常内置电源管理逻辑,由 BMC 下发指令后,CPLD 控制 FET 开关实现对指定槽位的通断电。
此过程可通过 PowerControl 方法调用实现,由 BMC 内部模块(如 hwproxy)转发至 CPLD。
实现流程(基于 openUBMC 架构)
-
硬件识别:
- Riser 卡加载时,BMC 识别其 UID 并匹配为支持 Standby 供电的型号。
- 加载对应的
RiserCardCSR 配置对象(如RiserCard_SEU1)。
-
PCIe Slot 映射:
- 通过
PCIeSlot对象绑定物理槽位(Slot = 1)与 DPU 卡(DPUCard_1)。
- 通过
-
调用控制接口:
- 使用资源协作接口发起控制命令:
POST /redfish/v1/Chassis/1/PCIeSlots/1/PowerControl Body: {"State": "Off"} - 或通过 IPMI/BMC CLI 调用
bmc.kepler.Systems.PCIeSlot.PowerControl方法。
- 使用资源协作接口发起控制命令:
-
底层执行:
- BMC 将请求转化为对底层硬件的操作(如写 CPLD 寄存器或控制 GPIO 组合)。
- CPLD 拉低对应槽位的电源使能信号,切断 DPU 卡供电(即使主板处于 S5)。
-
状态同步:
PowerState属性更新为Off。- 触发
Event_PowerState事件记录电源变更。
结论
| 问题 | 回答 |
|---|---|
| 如何控制 PCIe 槽位上下电? | 通过标准资源协作接口 bmc.kepler.Systems.PCIeSlot.PowerControl(On/Off) 实现。 |
| 是否通过 Pca9555 寄存器控制? | 否。Pca9555 仅用于 GPIO 信号管理(如 ID 读取、告警监控),不具备电源开关控制功能。 |
| 是否通过扩展板 CPLD 控制? | 极有可能是。CPLD 是实现 Standby 供电下电源通断的合理硬件载体,由 BMC 下发指令后执行。 |
推荐实践:在系统配置中为
PCIeSlot对象启用PowerControl方法,并确保底层驱动支持对指定槽位的独立电源管理,即可满足客户对 DPU 卡 S5 独立供电与可控上下电的需求。
相关链接: