CSR配置字典之PcieAddrInfo类
更新时间:2025/7/22
在Gitcode上查看源码

📋 文档信息

项目内容
文档标题PcieAddrInfo类配置字典
版本v1.0
创建日期2025-01-27
最后更新2025-01-27
维护状态✅ 活跃维护

📋 变更历史记录

文档变更记录

版本发布日期变更类型变更内容影响范围维护人员
v1.02025-01-27初始版本创建PcieAddrInfo类配置字典全新文档系统管理员

🎯 类概览

PcieAddrInfo 类

属性
类名称PcieAddrInfo
功能描述PCIe地址信息管理和业务拓扑建立
所属SIG组hardware
所属组件PCIe管理
责任人PCIe架构组
最后更新2025-01-27
状态🟢 正常运行

📊 属性定义详表

必选属性

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
LocationString""--PCIe槽位所在的位置pcie业务拓扑建立"HddBackplane${Slot}"CSR配置硬件
ComponentTypeU320--部件类型
与Component类的中的部件类型属性对应
(标准定义,如:8:PCIe标卡、13:NCI卡、71:SAS、83:OCP卡)
pcie业务拓扑建立,生成丝印信息(pcie卡或直通盘等)0CSR配置硬件
ControllerIndexU320--PCIe控制器索引
CPU内部同类型控制器的索引,从0开始编号
pcie业务拓扑建立,生成丝印信息0CSR配置硬件
ControllerTypeU3200-5-PCIe控制器类型
0:PCIeCore
1:NIC
2:SAS
3:SATA
4:ZIP
5:SEC
pcie业务拓扑建立,生成丝印信息0CSR配置硬件
ContainerUIDString""--容器UIDUBC高速线缆检测、pcie业务拓扑建立"00000001040302074260"CSR配置硬件
ContainerUnitTypeString""--容器单板类型UBC高速线缆检测、pcie业务拓扑建立"IEU"CSR配置硬件
GroupPositionString""--对象主键,同一个CSR里配置命名不能重复UBC高速线缆检测、pcie业务拓扑建立"PcieAddrInfo_1_${GroupPosition}"CSR配置硬件

可选属性

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
SegmentU320--多PCI Bridge场景的编号
每一个Segment对应一个PCI Bus空间
segment怎么配置?0组件根据业务拓扑建立更新软件
GroupIDU320--逻辑组ID啥意思?0组件根据业务拓扑建立更新软件
SlotIDU320--PCIe设备的槽位号这是整机slot ID吗,有图吗,能不能具体表示一下?0组件根据业务拓扑建立更新软件
SocketIDU3200-1-CPU ID
0:CPU1
1:CPU 2
pcie业务拓扑建立0组件根据业务拓扑建立更新软件
BusU320--root port Bus号pcie业务拓扑建立0组件根据业务拓扑建立更新软件
DeviceU320--root port Device号pcie业务拓扑建立0组件根据业务拓扑建立更新软件
FunctionU320--root port Function号pcie业务拓扑建立0组件根据业务拓扑建立更新软件
ContainerSlotU320--容器槽位信息
工具审查出来要求配置的属性,需要怎么配置呢?是否和Slotid一样?
容器槽位管理0CSR配置硬件
SlotTypeString"""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"
  }
}

🔧 使用指南

配置步骤

  1. 确定物理位置:配置Location属性指定PCIe槽位的物理位置
  2. 设置组件类型:根据实际设备配置ComponentType
  3. 配置控制器信息:设置ControllerType和ControllerIndex
  4. 设置容器信息:配置ContainerUID和ContainerUnitType
  5. 确保主键唯一:设置GroupPosition作为对象主键
  6. 验证拓扑信息:检查软件属性的自动生成是否正确

注意事项

  • 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可能不同,需要根据具体的容器设计进行配置