背景
产业的OCP卡管理方案中,需要x16资源可以从2个CPU中出,每个CPU出一个x8,每张卡需要分配多个PCIeFunction以对应不同的CPU。
需要以PCIeFunction而不是PCIeDevice为单位管理root BDF和BDF。
关联ISSUE
https://gitcode.com/openUBMC/pcie_device/issues/45
整体方案
PCIeFunction由pcie_device组件负责上树,属性实现沿用bmc.kepler.Systems.PCIeDevices.PCIeDevice和bmc.kepler.Systems.PCIeDevices.PCIeCard。
评审点
为了适应每张卡有多个PCIeFunction以及多种BDF的需求,需新增以下路径:
/bmc/kepler/Systems/${SystemId}/PCIeDevices/${Id}/PCIeFunctions/${PCIeFunctionId}
该路径有以下接口:
bmc.kepler.Systems.PCIeDevice.PCIeFunction
bmc.kepler.Systems.PCIeDevice.PCIeFunction.RAS
接口属性见详细描述。
详细描述
新增Path:
/bmc/kepler/Systems/${SystemId}/PCIeDevices/${Id}/PCIeFunctions/${PCIeFunctionId}
新增Interface:
bmc.kepler.Systems.PCIeDevice.PCIeFunction
bmc.kepler.Systems.PCIeDevice.PCIeFunction.RAS
bmc.kepler.Systems.PCIeDevice.PCIeFunction属性如下:
| 属性名称 | 签名 | 默认值 | 操作权限 | 说明 | 持久化 | 变化通知 | 备注 |
|---|---|---|---|---|---|---|---|
| SegmentNumber | q | 0xffff | 只读,R:ReadOnly | 用于多PCI Bridge场景的编号,每一个SegmentNumber对应一个PCI Bus空间 | 否 | 否 | |
| BusNumber | y | 0xff | 只读,R:ReadOnly | PCIe功能的总线号 | 否 | 否 | |
| DeviceNumber | y | 0xff | 只读,R:ReadOnly | PCIe功能的设备号 | 否 | 否 | |
| FunctionNumber | y | 0xff | 只读,R:ReadOnly | PCIe功能的功能号 | 否 | 否 | |
| RelatedProcessorId | y | 0xff | 只读,R:ReadOnly | 关联的处理器逻辑Id | 否 | 否 | |
| RootBusNumber | y | 0xff | 只读,R:ReadOnly | PCIe功能的根总线号 | 否 | 否 | |
| RootDeviceNumber | y | 0xff | 只读,R:ReadOnly | PCIe功能的根设备号 | 否 | 否 | |
| RootFunctionNumber | y | 0xff | 只读,R:ReadOnly | PCIe功能的根功能号 | 否 | 否 | |
| VendorId | q | 0xffff | 只读,R:ReadOnly | 制造商ID | 否 | 否 | |
| DeviceId | q | 0xffff | 只读,R:ReadOnly | 设备ID | 否 | 否 | |
| SubsystemVendorId | q | 0xffff | 只读,R:ReadOnly | 子厂商ID | 否 | 否 | |
| SubsystemId | q | 0xffff | 只读,R:ReadOnly | 子设备ID | 否 | 否 | |
| FunctionProtocol | s | “PCIe” | 只读,R:ReadOnly | PCIe功能协议,取值为"CXL"或"PCIe" | 否 | 否 | |
| FunctionType | s | “Physical” | 只读,R:ReadOnly | PCIe功能类型,取值为"Physical"或"Virtual" | 否 | 否 | |
| BaseClassCode | y | 0xff | 只读,R:ReadOnly | PCIe功能的基类码 | 否 | 否 | |
| SubClassCode | y | 0xff | 只读,R:ReadOnly | PCIe功能的子类码 | 否 | 否 | |
| ProgrammingInterface | y | 0xff | 只读,R:ReadOnly | PCIe功能的编程接口 | 否 | 否 |
bmc.kepler.Systems.PCIeDevice.PCIeFunction.RAS属性如下:
| 属性名称 | 签名 | 默认值 | 操作权限 | 说明 | 持久化 | 变化通知 | 备注 |
|---|---|---|---|---|---|---|---|
| FatalErrorCount | u | 0 | 可读写 R: ReadOnly W:BasicSetting | PCIe功能致命错误计数 | 复位持久化 | 是 | |
| NonFatalErrorCount | u | 0 | 可读写 R: ReadOnly W:BasicSetting | PCIe功能非致命错误计数 | 复位持久化 | 是 | |
| BadDLLPCount | u | 0 | 可读写 R: ReadOnly W:BasicSetting | 最近一次上电期间BadDLLP错误累计值 | 复位持久化 | 是 | |
| BadTLPCount | u | 0 | 可读写 R: ReadOnly W:BasicSetting | 最近一次上电期间BadTLP错误累计值 | 复位持久化 | 是 | |
| UnsupportedRequestCount | u | 0 | 可读写 R: ReadOnly W:BasicSetting | 最近一次上电期间UnsupportedRequest错误累计值 | 复位持久化 | 是 | |
| CorrectableErrorOverfrequencyCount | u | 0 | 可读写 R: ReadOnly W:BasicSetting | 最近一次上电期间PCIe设备CE故障发生频率超门限错误累计值 | 复位持久化 | 是 |
评审结论
同意新增资源协作对象路径:
/bmc/kepler/Systems/${SystemId}/PCIeDevices/${Id}/PCIeFunctions/${PCIeFunctionId},并新增资源协作接口:
bmc.kepler.Systems.PCIeDevice.PCIeFunction
bmc.kepler.Systems.PCIeDevice.PCIeFunction.RAS
接口属性参见详细描述
遗留问题
无