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

📋 文档信息

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

📋 变更历史记录

文档变更记录

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

🎯 类概览

BDFConfig 类

属性
类名称BDFConfig
功能描述PCIe设备BDF配置对象,表示SocketId和PortId和对应槽位的root BDF的关系,用于PCIe设备管理
所属SIG组hardware
所属组件PCIe设备
责任人硬件管理组
最后更新2025-01-27
状态🟢 正常运行

📊 属性定义详表

必选属性

无必选属性


可选属性

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
BDFConfigObject{}Object-PCIe设备BDF配置
硬件和带内BIOS分配bus不同,每个机型有各自的配置
代码通过SocketId和PortId查出对应槽位的root BDF
表示SocketId和PortId和对应槽位的root BDF的关系详见配置示例CSR配置硬件

🔗 动态关联机制

语法规范

使用复杂JSON对象配置:

json
{
  "Type": "RootBDF",
  "SocketId": 0,
  "BDFConfigs": [
    {
      "PortId": 0,
      "ControllerIndex": 0,
      "Bus": 0,
      "Device": 0
    }
  ]
}

关联说明

  • BDF映射: 建立SocketId、PortId与BDF的映射关系
  • PCIe拓扑: 描述PCIe设备的拓扑结构
  • 硬件适配: 不同机型有不同的BDF配置

📂 分类标准

硬件属性

  • 定义:与PCIe硬件拓扑直接相关的参数
  • 特点:BDF配置、槽位映射、硬件拓扑等
  • 示例BDFConfig

软件属性

  • 定义:当前版本无软件属性
  • 特点:所有属性都是硬件相关
  • 示例:无

📝 配置示例

基础BDF配置

json
{
  "BDFConfig_Basic": {
    "Type": "RootBDF",
    "SocketId": 0,
    "BDFConfigs": [
      {
        "PortId": 0,
        "ControllerIndex": 0,
        "Bus": 0,
        "Device": 0
      },
      {
        "PortId": 1,
        "ControllerIndex": 0,
        "Bus": 0,
        "Device": 1
      }
    ]
  }
}

多控制器BDF配置

json
{
  "BDFConfig_MultiController": {
    "Type": "RootBDF",
    "SocketId": 0,
    "BDFConfigs": [
      {
        "PortId": 0,
        "ControllerIndex": 0,
        "Bus": 0,
        "Device": 0
      },
      {
        "PortId": 1,
        "ControllerIndex": 0,
        "Bus": 0,
        "Device": 1
      },
      {
        "PortId": 4,
        "ControllerIndex": 1,
        "Bus": 8,
        "Device": 0
      },
      {
        "PortId": 5,
        "ControllerIndex": 1,
        "Bus": 8,
        "Device": 1
      }
    ]
  }
}

完整BDF配置(参考示例)

json
{
  "BDFConfig_Complete": {
    "Type": "RootBDF",
    "SocketId": 0,
    "BDFConfigs": [
      {
        "PortId": 0,
        "ControllerIndex": 0,
        "Bus": 0,
        "Device": 0
      },
      {
        "PortId": 1,
        "ControllerIndex": 0,
        "Bus": 0,
        "Device": 1
      },
      {
        "PortId": 2,
        "ControllerIndex": 0,
        "Bus": 0,
        "Device": 2
      },
      {
        "PortId": 3,
        "ControllerIndex": 0,
        "Bus": 0,
        "Device": 3
      },
      {
        "PortId": 4,
        "ControllerIndex": 1,
        "Bus": 8,
        "Device": 0
      },
      {
        "PortId": 5,
        "ControllerIndex": 1,
        "Bus": 8,
        "Device": 1
      },
      {
        "PortId": 6,
        "ControllerIndex": 1,
        "Bus": 8,
        "Device": 2
      },
      {
        "PortId": 7,
        "ControllerIndex": 1,
        "Bus": 8,
        "Device": 3
      },
      {
        "PortId": 8,
        "ControllerIndex": 2,
        "Bus": 16,
        "Device": 0
      },
      {
        "PortId": 9,
        "ControllerIndex": 2,
        "Bus": 16,
        "Device": 1
      },
      {
        "PortId": 10,
        "ControllerIndex": 2,
        "Bus": 16,
        "Device": 2
      },
      {
        "PortId": 11,
        "ControllerIndex": 2,
        "Bus": 16,
        "Device": 3
      },
      {
        "PortId": 12,
        "ControllerIndex": 3,
        "Bus": 24,
        "Device": 0
      },
      {
        "PortId": 13,
        "ControllerIndex": 3,
        "Bus": 24,
        "Device": 1
      },
      {
        "PortId": 14,
        "ControllerIndex": 3,
        "Bus": 24,
        "Device": 2
      },
      {
        "PortId": 15,
        "ControllerIndex": 3,
        "Bus": 24,
        "Device": 3
      }
    ]
  }
}

🔧 使用指南

配置步骤

  1. 硬件调研: 了解目标机型的PCIe硬件拓扑
  2. BIOS分析: 分析BIOS对PCIe总线的分配
  3. 配置创建: 根据硬件和BIOS创建BDF配置
  4. 验证测试: 验证BDF配置的正确性

BDF概念说明

  • BDF: Bus-Device-Function,PCIe设备的三级地址
  • Bus: PCIe总线号
  • Device: 设备号
  • Function: 功能号

配置字段说明

  • Type: 配置类型,通常为"RootBDF"
  • SocketId: CPU Socket ID
  • PortId: PCIe端口ID
  • ControllerIndex: PCIe控制器索引
  • Bus: PCIe总线号
  • Device: PCIe设备号

机型差异处理

  • 硬件差异: 不同机型的PCIe硬件拓扑不同
  • BIOS差异: 不同机型的BIOS总线分配不同
  • 配置独立: 每个机型需要独立的BDF配置

使用场景

  • PCIe设备管理: 管理PCIe设备的拓扑结构
  • 设备发现: 发现和识别PCIe设备
  • 槽位映射: 建立物理槽位与逻辑地址的映射
  • 设备诊断: 诊断PCIe设备问题

注意事项

  • 机型匹配: 确保BDF配置与目标机型匹配
  • BIOS一致: 确保配置与BIOS总线分配一致
  • 拓扑正确: 确保PCIe拓扑结构正确
  • 版本兼容: 注意不同版本的兼容性

故障排除

  1. 设备发现失败

    • 检查BDF配置是否正确
    • 确认硬件拓扑是否匹配
    • 验证BIOS设置是否正确
  2. 槽位映射错误

    • 检查PortId和SocketId是否正确
    • 确认ControllerIndex是否正确
    • 验证Bus和Device是否正确
  3. PCIe设备异常

    • 检查PCIe设备是否正常插入
    • 确认电源供应是否正常
    • 验证PCIe链路是否正常

性能优化

  • 配置缓存: 缓存BDF配置,减少查询时间
  • 快速查找: 优化BDF查找算法
  • 批量处理: 批量处理PCIe设备操作

扩展功能

  • 动态发现: 动态发现PCIe设备变化
  • 热插拔支持: 支持PCIe设备热插拔
  • 故障检测: 自动检测PCIe设备故障

机型适配说明

  • 机型: 配置在代码中直接定义,PSR中无配置
  • 其他机型: 需要在PSR中配置BDF信息
  • 新机型: 需要根据硬件规格创建新的BDF配置

📚 相关文档