数据结构读取与响应格式 - 页码125
我们继续深入分析 NVMe-MI 2.0 规范中的 2-Wire Port Specific Data 的最后字段 以及 Controller List & Controller Information 数据结构(5.7.3 ~ 5.7.4)。
🔹 Figure 116(续):2-Wire Port Specific Data
✅ 字节 12:NVMe Basic Management (NVMEBM)
Bit | 名称 | 说明 |
---|---|---|
0 | NVMEBMS(NVMe Basic Management Support) | 若为 1 ,表示此端口支持“NVMe Basic Management Command”若为 0 ,则不支持该命令。 |
⚠️ 注意: - 强烈建议清除此位(即设置为 0) - 该命令 非标准 NVMe-MI 协议的一部分,仅供附录参考说明(见 Appendix A)
🧩 5.7.3 Controller List Response Data
该结构体列出了当前 NVM Subsystem 中所有的 Controller,包括:
- I/O Controller
- Administrative Controller
- Primary/Secondary Controller
📌 关键点:
- 返回的控制器列表从指定的
CTRLID
开始(NVMe Management Dword 0) - 最多可包含 2047 个 Controller Identifier
- 使用此结构可以一次性获取所有存在控制器的编号
📖 具体 Controller Identifier 的定义请参考 NVMe Base Specification
🧩 5.7.4 Controller Information Response Data
用于获取 特定 Controller 的详细信息。响应结构见 Figure 117。
✅ 字节 00:Port Identifier (PORTID)
表示该 Controller 所连接的 PCIe 端口编号
✅ 字节 01 ~ 04:Reserved
✅ 字节 05:PCIe Routing ID 信息(PRII)
Bit | 字段 | 含义 |
---|---|---|
0 | PCIERIV | 若为 1 ,表示设备已捕获 PCI Bus Number + Device Number(或仅 Bus Number,若为 ARI)若为 0 ,表示未捕获 |
7:1 | 保留 |
✅ 字节 06 ~ 07:PCIe Routing ID (PRI)
这个字段编码了 PCIe 地址信息:
Bit 范围 | 字段 | 说明 |
---|---|---|
15:08 | PCIBN | PCI Bus Number |
07:03 | PCIDN | PCI Device Number |
02:00 | PCIFN | PCI Function Number |
❗对于 ARI(Alternative Routing-ID Interpretation)设备,此处的 8 位合并表示完整的 Function Number(替代 Device/Function 分离)。
✅ 字节 08 ~ 09:PCI Vendor ID (PCIVID)
标准 PCI 标识,表示厂商(Vendor)编号。
✅ 字节 10 ~ 11:PCI Device ID (PCIDID)
对应厂商定义的具体设备型号 ID。
✅ 字节 12 ~ 13:PCI Subsystem Vendor ID (PCISVID)
用于区分子系统级别厂商 ID(常用于 OEM 区分)。
✅ 字节 14 ~ 15:PCI Subsystem Device ID (PCISDID)
用于指定子系统设备 ID。
✅ 总结图示(结构关系回顾):
Controller Information Data Structure:
+----------------+-------------------------------------------------+
| Offset (Byte) | Field |
+----------------+-------------------------------------------------+
| 00 | Port Identifier (PORTID) |
| 01-04 | Reserved |
| 05 | PRII (PCIe Routing ID Info: Valid Bit) |
| 06-07 | PRI (Routing ID: Bus/Device/Function Numbers) |
| 08-09 | PCI Vendor ID (PCIVID) |
| 10-11 | PCI Device ID (PCIDID) |
| 12-13 | PCI Subsystem Vendor ID (PCISVID) |
| 14-15 | PCI Subsystem Device ID (PCISDID) |
+----------------+-------------------------------------------------+
如果你准备继续阅读 5.7.5 Optionally Supported Command List 或者对 Controller List 的使用场景和命令示例感兴趣,我可以帮你继续分析。是否继续?