【待评审】新增 PCIeOccupant 资源协作接口及路径

背景

当前 PCIe 设备管理需要感知槽位上的软件在位状态,以支持 PCIe 不建链告警功能。现有 PCIeDevice 接口缺少 DeviceType 属性,且没有独立的 PCIeOccupant 接口来管理槽位占用信息。需要新增 PCIeOccupant 资源协作接口和路径,并将 DeviceType 属性从私有属性中移至 PCIeDevice 接口定义中。

关联ISSUE

支持PCIe标卡在位但是建链失败告警

整体方案

在 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 告警;若硬件不在位或软件在位,则消除告警。

评审点

  1. 新增资源协作路径 /bmc/kepler/Chassis/${ChassisId}/PCIeOccupants/${Id}

  2. 新增资源协作接口 bmc.kepler.Chassis.PCIeOccupant

  3. 变更资源协作接口 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预审

评审结论

同意以下变更:

  1. 新增资源协作路径 /bmc/kepler/Chassis/${ChassisId}/PCIeOccupants/${Id},详情见详细描述

  2. 新增资源协作接口 bmc.kepler.Chassis.PCIeOccupant,详情见详细描述

  3. 变更资源协作接口 bmc.kepler.Systems.PCIeDevices.PCIeDevice,详情见详细描述

遗留问题

预审答案内容由AI生成,仅供参考:

帖子评审结论:新增 PCIeOccupant 资源协作接口及路径

帖子相关性:相关(MDB 相关: 标题含强特征: 资源协作)

  • 总评审点数:3
  • MDB 资源协作接口评审点:3
  • 其他评审点:0

总体结果:通过(3/3 个评审点通过)

评审点 1:新增资源协作路径 /bmc/kepler/Systems/${SystemId}/PCIeOccupants/${Id}【MDB】

结果:通过

  • 规则合规性检查:通过(28 项检查全部通过)

评审点 2:新增资源协作接口 bmc.kepler.Systems.PCIeOccupants.PCIeOccupant【MDB】

结果:通过

  • 规则合规性检查:通过(28 项检查全部通过)
    • 警告项(建议性)
      规则ID:MDB-NAMING-028
      级别:建议性
      问题描述:属性 SlotID 描述为“槽位号”,语义命中社区高频场景,但未优先复用社区沉淀的 SlotNumber 词汇。
      处理建议:severity=‘should’ 建议性规则,建议修改以提升规范符合性

评审点 3:变更资源协作接口 bmc.kepler.Systems.PCIeDevices.PCIeDevice,新增 DeviceType 属性【MDB】

结果:通过

  • 规则合规性检查:通过(28 项检查全部通过)