背景
当前 PCIe 设备管理需要感知槽位上的软件在位状态,以支持 PCIe 不建链告警功能。现有 PCIeDevice 接口缺少 DeviceType 属性,且没有独立的 PCIeOccupant 接口来管理槽位占用信息。需要新增 PCIeOccupant 资源协作接口和路径,并将 DeviceType 属性从私有属性中移至 PCIeDevice 接口定义中。
关联ISSUE
整体方案
在 pcie_device 组件中新增 PCIeOccupant 资源协作路径和接口,用于管理 PCIe 槽位的软件占用状态。同时变更 PCIeDevice 接口,将 DeviceType 属性纳入接口定义,统一对外暴露。依赖 mdb_interface 仓新增接口定义,pcie_device 组件通过 model.json 配置实现。
不建链告警检测原理:OS 启动后(SMBios 就绪后延迟 10 分钟),遍历所有配置了 TianChi 连接器的 PCIe 卡槽位(PcieAddrInfo.ComponentType 为 8),结合 BusinessConnector 判断硬件在位(TianChi 连接器 Presence 为真),同时检查软件在位状态(PCIeDevice 对象存在且 DeviceType 为 8、PCIeOccupant 对象存在、UBInterfaceCard 对象存在,三者满足其一即可)。若硬件在位但软件不在位,则上报 0x08000067 告警;若硬件不在位或软件在位,则消除告警。
评审点
-
新增资源协作路径
/bmc/kepler/Chassis/${ChassisId}/PCIeOccupants/${Id} -
新增资源协作接口
bmc.kepler.Chassis.PCIeOccupant -
变更资源协作接口
bmc.kepler.Systems.PCIeDevices.PCIeDevice,新增 DeviceType 属性
详细描述
评审点1:新增资源协作路径 /bmc/kepler/Chassis/${ChassisId}/PCIeOccupants/${Id}
路径描述:用于管理 PCIe 槽位的软件占用状态,区分物理在位、跨端口链接、软件在位和非管理型占用等场景,归属 PCIe 设备管理功能域。
实现接口
| 实现接口 | 实现接口描述 | CSR配置影响 | 持久化影响 | 其他影响 | ||
|---|---|---|---|---|---|---|
bmc.kepler.Chassis.PCIeOccupant |
实现 SlotId 和 DeviceType 属性,提供槽位占用信息查询功能 | 新增 SlotId 属性 CSR 配置 | 不涉及持久化,无兼容性问题 | 需 pcie_device 组件实现 PCIeOccupant 类 |
评审点2:新增资源协作接口 bmc.kepler.Chassis.PCIeOccupant
接口描述:定义 PCIe 槽位占用信息,包括槽位号和占用类型,用于感知 PCIe 槽位上的软件在位状态,支持 PCIe 不建链告警功能。
新增属性
| 属性名称 | 签名 | 只读 | 变化通知 | 属性描述 | 访问权限 | 属性来源 | 持久化类型 | 易变属性 | ||
|---|---|---|---|---|---|---|---|---|---|---|
| SlotId | y | True | false | 槽位号,表示 PCIe 槽位编号 | Read: ReadOnly | CSR | false | |||
| DeviceType | s | True | false | 设备占用PCIe槽位类型,枚举值包括:""(默认,未占用)、"PhysicalSlotOccupant"、"SoftwareOccupant"、"Unmanaged",默认值为空字符串 |
Read: ReadOnly | false |
DeviceType 枚举值说明:
-
"PhysicalSlotOccupant":物理槽位占用,不需要UBC线缆,兼容线缆检测不插UBC的场景 -
"SoftwareOccupant":软件在位,使用配置的软件Connector固定为1在位的场景 -
"Unmanaged":不纳管,该槽位是正常的PCIe设备但不由BMC纳管,如retimer的JBOG场景
新增接口影响
| 路径 | 新增接口影响 | CSR配置影响 | 持久化影响 | 其他影响 | ||
|---|---|---|---|---|---|---|
/bmc/kepler/Chassis/${ChassisId}/PCIeOccupants/${Id} |
对外提供 PCIe 槽位占用信息查询功能 | 新增 SlotId 属性 CSR 配置 | 不涉及持久化,无兼容性问题 | 需 pcie_device 组件实现 PCIeOccupant 类 |
评审点3:变更资源协作接口 bmc.kepler.Systems.PCIeDevices.PCIeDevice
变更描述:PCIeDevice 接口承载 PCIe 设备管理功能,DeviceType 属性用于标识设备类型(如 PCIe 卡、OCP 卡等),与 PCIe 设备的 SlotId 共同用于不建链告警判断逻辑。该属性未在接口定义中声明,需纳入接口以便统一管理。
接口链接:bmc.kepler.Systems.PCIeDevices.PCIeDevice 接口定义
变更属性
| 变更类型 | 属性名称 | 签名 | 只读 | 变化通知 | 属性描述 | 访问权限 | 属性来源 | 持久化类型 | 变更影响 | ||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 新增 | DeviceType | y | True | false | PCIe 设备类型,用于标识设备分类(如 PCIe 卡、OCP 卡、UB 接口卡等),U8 类型,默认值为 0 | Read: ReadOnly | CSR | 新增属性到接口中无业务影响,作用于 /bmc/kepler/Systems/${SystemId}/PCIeDevices/${Id} 路径 |
变更接口影响
| 路径 | 变更接口影响 | CSR配置影响 | 持久化影响 | 其他影响 | ||
|---|---|---|---|---|---|---|
/bmc/kepler/Systems/${SystemId}/PCIeDevices/${Id} |
新增 DeviceType 属性,提供设备类型信息 | DeviceType 已有 CSR 配置,无需变更 | 不涉及持久化,无兼容性问题 | 不涉及 |
是否准备好AI预审
是
评审结论
同意以下变更:
-
新增资源协作路径
/bmc/kepler/Chassis/${ChassisId}/PCIeOccupants/${Id},详情见详细描述 -
新增资源协作接口
bmc.kepler.Chassis.PCIeOccupant,详情见详细描述 -
变更资源协作接口
bmc.kepler.Systems.PCIeDevices.PCIeDevice,详情见详细描述
遗留问题
无