CSR配置字典之PcieAddrInfo类
更新时间:2025/7/22
在Gitcode上查看源码📋 文档信息
项目 | 内容 |
---|---|
文档标题 | PcieAddrInfo类配置字典 |
版本 | v1.0 |
创建日期 | 2025-01-27 |
最后更新 | 2025-01-27 |
维护状态 | ✅ 活跃维护 |
📋 变更历史记录
文档变更记录
版本 | 发布日期 | 变更类型 | 变更内容 | 影响范围 | 维护人员 |
---|---|---|---|---|---|
v1.0 | 2025-01-27 | 初始版本 | 创建PcieAddrInfo类配置字典 | 全新文档 | 系统管理员 |
🎯 类概览
PcieAddrInfo 类
属性 | 值 |
---|---|
类名称 | PcieAddrInfo |
功能描述 | PCIe地址信息管理和业务拓扑建立 |
所属SIG组 | hardware |
所属组件 | PCIe管理 |
责任人 | PCIe架构组 |
最后更新 | 2025-01-27 |
状态 | 🟢 正常运行 |
📊 属性定义详表
必选属性
属性名 | 类型 | 默认值 | 取值范围 | 动态关联 | 描述 | 使用场景 | 举例 | 来源 | 分类 |
---|---|---|---|---|---|---|---|---|---|
Location | String | "" | - | - | PCIe槽位所在的位置 | pcie业务拓扑建立 | "HddBackplane${Slot}" | CSR配置 | 硬件 |
ComponentType | U32 | 0 | - | - | 部件类型 与Component类的中的部件类型属性对应 (标准定义,如:8:PCIe标卡、13:NCI卡、71:SAS、83:OCP卡) | pcie业务拓扑建立,生成丝印信息(pcie卡或直通盘等) | 0 | CSR配置 | 硬件 |
ControllerIndex | U32 | 0 | - | - | PCIe控制器索引 CPU内部同类型控制器的索引,从0开始编号 | pcie业务拓扑建立,生成丝印信息 | 0 | CSR配置 | 硬件 |
ControllerType | U32 | 0 | 0-5 | - | PCIe控制器类型 0:PCIeCore 1:NIC 2:SAS 3:SATA 4:ZIP 5:SEC | pcie业务拓扑建立,生成丝印信息 | 0 | CSR配置 | 硬件 |
ContainerUID | String | "" | - | - | 容器UID | UBC高速线缆检测、pcie业务拓扑建立 | "00000001040302074260" | CSR配置 | 硬件 |
ContainerUnitType | String | "" | - | - | 容器单板类型 | UBC高速线缆检测、pcie业务拓扑建立 | "IEU" | CSR配置 | 硬件 |
GroupPosition | String | "" | - | - | 对象主键,同一个CSR里配置命名不能重复 | UBC高速线缆检测、pcie业务拓扑建立 | "PcieAddrInfo_1_${GroupPosition}" | CSR配置 | 硬件 |
可选属性
属性名 | 类型 | 默认值 | 取值范围 | 动态关联 | 描述 | 使用场景 | 举例 | 来源 | 分类 |
---|---|---|---|---|---|---|---|---|---|
Segment | U32 | 0 | - | - | 多PCI Bridge场景的编号 每一个Segment对应一个PCI Bus空间 | segment怎么配置? | 0 | 组件根据业务拓扑建立更新 | 软件 |
GroupID | U32 | 0 | - | - | 逻辑组ID | 啥意思? | 0 | 组件根据业务拓扑建立更新 | 软件 |
SlotID | U32 | 0 | - | - | PCIe设备的槽位号 | 这是整机slot ID吗,有图吗,能不能具体表示一下? | 0 | 组件根据业务拓扑建立更新 | 软件 |
SocketID | U32 | 0 | 0-1 | - | CPU ID 0:CPU1 1:CPU 2 | pcie业务拓扑建立 | 0 | 组件根据业务拓扑建立更新 | 软件 |
Bus | U32 | 0 | - | - | root port Bus号 | pcie业务拓扑建立 | 0 | 组件根据业务拓扑建立更新 | 软件 |
Device | U32 | 0 | - | - | root port Device号 | pcie业务拓扑建立 | 0 | 组件根据业务拓扑建立更新 | 软件 |
Function | U32 | 0 | - | - | root port Function号 | pcie业务拓扑建立 | 0 | 组件根据业务拓扑建立更新 | 软件 |
ContainerSlot | U32 | 0 | - | - | 容器槽位信息 工具审查出来要求配置的属性,需要怎么配置呢?是否和Slotid一样? | 容器槽位管理 | 0 | CSR配置 | 硬件 |
SlotType | String | "" | "FullLength", "HalfLength", "LowProfile", "Mini", "M2", "OEM", "OCP3Small", "OCP3Large", "U2" | - | PCIe插槽类型 | 北向redfish接口查询槽位信息 | "FullLength" | CSR配置 | 硬件 |
🔗 动态关联机制
语法规范
使用 #/xxx
格式实现属性间的动态关联:
yaml
# 语法格式
属性名: "#/目标类.属性名"
# 实际示例
Location: "HddBackplane${Slot}" # 基于槽位的动态位置
GroupPosition: "PcieAddrInfo_1_${GroupPosition}" # 基于组位置的动态命名
ContainerUID: "00000001040302074260" # 固定的容器UID
关联说明
- Location: 支持变量替换,基于槽位信息动态生成位置字符串
- GroupPosition: 作为对象主键,确保同一CSR中的唯一性
- ContainerUID: 与容器管理系统关联,用于UBC高速线缆检测
📂 分类标准
硬件属性
- 定义:需要在CSR中明确配置的硬件相关参数
- 特点:直接影响PCIe设备的物理位置和拓扑结构
- 示例:
Location
,ComponentType
,ControllerIndex
,ControllerType
,ContainerUID
,ContainerUnitType
,GroupPosition
,ContainerSlot
软件属性
- 定义:由组件根据业务拓扑自动建立和更新的参数
- 特点:反映PCIe设备的逻辑地址和拓扑关系
- 示例:
Segment
,GroupID
,SlotID
,SocketID
,Bus
,Device
,Function
📝 配置示例
标准PCIe设备配置
json
{
"PcieAddrInfo": {
"Segment": 0,
"GroupID": 0,
"SlotID": 0,
"SocketID": 0,
"Bus": 0,
"Device": 0,
"Function": 0,
"Location": "HddBackplane1",
"ComponentType": 8,
"ControllerIndex": 0,
"ControllerType": 0,
"ContainerUID": "00000001040302074260",
"ContainerUnitType": "IEU",
"ContainerSlot": 1,
"GroupPosition": "PcieAddrInfo_1_1"
}
}
NIC控制器配置
json
{
"PcieAddrInfo": {
"Segment": 0,
"GroupID": 1,
"SlotID": 1,
"SocketID": 0,
"Bus": 1,
"Device": 0,
"Function": 0,
"Location": "NicSlot1",
"ComponentType": 13,
"ControllerIndex": 0,
"ControllerType": 1,
"ContainerUID": "00000001040302074261",
"ContainerUnitType": "NIC",
"ContainerSlot": 1,
"GroupPosition": "PcieAddrInfo_2_1"
}
}
SAS控制器配置
json
{
"PcieAddrInfo": {
"Segment": 0,
"GroupID": 2,
"SlotID": 2,
"SocketID": 1,
"Bus": 2,
"Device": 0,
"Function": 0,
"Location": "SasSlot1",
"ComponentType": 71,
"ControllerIndex": 0,
"ControllerType": 2,
"ContainerUID": "00000001040302074262",
"ContainerUnitType": "SAS",
"ContainerSlot": 1,
"GroupPosition": "PcieAddrInfo_3_1"
}
}
OCP卡配置
json
{
"PcieAddrInfo": {
"Segment": 0,
"GroupID": 3,
"SlotID": 3,
"SocketID": 0,
"Bus": 3,
"Device": 0,
"Function": 0,
"Location": "OcpSlot1",
"ComponentType": 83,
"ControllerIndex": 1,
"ControllerType": 1,
"ContainerUID": "00000001040302074263",
"ContainerUnitType": "OCP",
"ContainerSlot": 1,
"GroupPosition": "PcieAddrInfo_4_1"
}
}
🔧 使用指南
配置步骤
- 确定物理位置:配置Location属性指定PCIe槽位的物理位置
- 设置组件类型:根据实际设备配置ComponentType
- 配置控制器信息:设置ControllerType和ControllerIndex
- 设置容器信息:配置ContainerUID和ContainerUnitType
- 确保主键唯一:设置GroupPosition作为对象主键
- 验证拓扑信息:检查软件属性的自动生成是否正确
注意事项
- GroupPosition唯一性:作为对象主键,同一CSR中不能重复
- ComponentType对应:必须与Component类的部件类型属性对应
- ControllerType范围:取值范围0-5,对应不同的控制器类型
- 软件属性:由组件自动更新,一般不需要手动配置
- Location格式:支持变量替换,保持命名规范
- ContainerUID格式:遵循容器UID的标准格式
性能建议
- 拓扑优化:合理规划PCIe设备的拓扑结构
- 控制器分配:避免同一控制器过载
- 总线分配:确保总线号的合理分配
- 缓存管理:对于频繁访问的拓扑信息考虑缓存
控制器类型说明
- PCIeCore (0): 通用PCIe控制器
- NIC (1): 网络接口控制器
- SAS (2): 串行连接SCSI控制器
- SATA (3): 串行ATA控制器
- ZIP (4): 压缩加速控制器
- SEC (5): 安全控制器
组件类型说明
- PCIe标卡 (8): 标准PCIe扩展卡
- NCI卡 (13): 网络控制接口卡
- SAS (71): SAS控制器卡
- OCP卡 (83): 开放计算项目标准卡
常见问题
- Q: Segment如何配置?
- A: Segment由组件根据业务拓扑自动建立,一般情况下使用默认值0即可
- Q: GroupID是什么意思?
- A: GroupID是逻辑组标识,用于将相关的PCIe设备归类管理
- Q: SlotID是整机slot ID吗?
- A: SlotID是PCIe设备的槽位号,对应整机中的物理槽位编号
- Q: ContainerSlot是否和SlotID一样?
- A: ContainerSlot是容器内的槽位信息,与SlotID可能不同,需要根据具体的容器设计进行配置