CSR配置字典之BDFConfig类
更新时间:2025/7/22
在Gitcode上查看源码📋 文档信息
项目 | 内容 |
---|---|
文档标题 | BDFConfig类配置字典 |
版本 | v1.0 |
创建日期 | 2025-01-27 |
最后更新 | 2025-01-27 |
维护状态 | ✅ 活跃维护 |
📋 变更历史记录
文档变更记录
版本 | 发布日期 | 变更类型 | 变更内容 | 影响范围 | 维护人员 |
---|---|---|---|---|---|
v1.0 | 2025-01-27 | 初始版本 | 创建BDFConfig类配置字典 | 全新文档 | 系统管理员 |
🎯 类概览
BDFConfig 类
属性 | 值 |
---|---|
类名称 | BDFConfig |
功能描述 | PCIe设备BDF配置对象,表示SocketId和PortId和对应槽位的root BDF的关系,用于PCIe设备管理 |
所属SIG组 | hardware |
所属组件 | PCIe设备 |
责任人 | 硬件管理组 |
最后更新 | 2025-01-27 |
状态 | 🟢 正常运行 |
📊 属性定义详表
必选属性
无必选属性
可选属性
属性名 | 类型 | 默认值 | 取值范围 | 动态关联 | 描述 | 使用场景 | 举例 | 来源 | 分类 |
---|---|---|---|---|---|---|---|---|---|
BDFConfig | Object | {} | 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
}
]
}
}
🔧 使用指南
配置步骤
- 硬件调研: 了解目标机型的PCIe硬件拓扑
- BIOS分析: 分析BIOS对PCIe总线的分配
- 配置创建: 根据硬件和BIOS创建BDF配置
- 验证测试: 验证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拓扑结构正确
- 版本兼容: 注意不同版本的兼容性
故障排除
设备发现失败:
- 检查BDF配置是否正确
- 确认硬件拓扑是否匹配
- 验证BIOS设置是否正确
槽位映射错误:
- 检查PortId和SocketId是否正确
- 确认ControllerIndex是否正确
- 验证Bus和Device是否正确
PCIe设备异常:
- 检查PCIe设备是否正常插入
- 确认电源供应是否正常
- 验证PCIe链路是否正常
性能优化
- 配置缓存: 缓存BDF配置,减少查询时间
- 快速查找: 优化BDF查找算法
- 批量处理: 批量处理PCIe设备操作
扩展功能
- 动态发现: 动态发现PCIe设备变化
- 热插拔支持: 支持PCIe设备热插拔
- 故障检测: 自动检测PCIe设备故障
机型适配说明
- 机型: 配置在代码中直接定义,PSR中无配置
- 其他机型: 需要在PSR中配置BDF信息
- 新机型: 需要根据硬件规格创建新的BDF配置