第5章 管理接口命令集 - 页码103
这部分(第 104 页)深入定义了 Controller Health Status Poll 命令中 NVMe Management Dword 0 的结构与意义。下面我们对各字段逐一剖析,帮助你彻底理解其作用与在实际中的使用方法。
✅ Controller Health Status Poll – NVMe Management Dword 0 字段详解(图 94)
| 位段 | 名称 | 含义解析 |
|---|---|---|
| 31 | Report All (ALL) | 如果该位为 1,则忽略错误选择位(即 Dword 1 中的 CWARN, SPARE, PDLU, CTEMP, CSTS 位),强制返回所有 Controller Health 结构。若该位为 0,则只根据这些错误状态是否触发来决定是否返回该控制器的状态。 |
| 30:27 | Reserved | 保留位,不使用,填 0。 |
| 26 | INCVF(Include SR-IOV Virtual Functions) | 设为 1:包含与 SR-IOV 虚拟功能(VF)相关联的控制器。设为 0:排除这些控制器。 |
| 25 | INCPF(Include SR-IOV Physical Functions) | 设为 1:包含与 SR-IOV 物理功能(PF)相关联的控制器。设为 0:排除这些控制器。 |
| 24 | INCF(Include PCI Functions) | 设为 1:包含所有非 SR-IOV 的 PCI 控制器。设为 0:排除这些控制器。 |
| 23:16 | MAXRENT(Maximum Response Entries) | 指定返回的 Controller Health 数据结构最大数量,0 为返回 1 条,最大为 255(值 FFh)。如果值为 100h(即 256),将触发 Invalid Parameter Error,并通过 PEL 指出该字段错误。 |
| 15:00 | SCTLID(Starting Controller ID) | 控制器枚举起始点:仅返回 Controller ID ≥ 此值的控制器数据。如果超出了当前 NVM Subsystem 最大控制器 ID,同样触发 Invalid Parameter Error。 |
🌟 小结与应用建议
这个字段设计非常灵活,允许用户按以下方式定制查询:
- 批量状态轮询:通过
SCTLID和MAXRENT控制返回内容的范围和数量,适合多控制器设备。 - 仅关心有问题的控制器:
ALL=0且设置 Dword 1 中的错误选择位(下一节详解 Dword 1)——返回那些状态有更新的控制器。 - SR-IOV 支持选择性:可以选择是否包含 SR-IOV 虚拟功能(VF)和物理功能(PF)控制器,非常适用于虚拟化环境。
- 系统级诊断工具的优化:可以只检查从某个 Controller ID 开始的控制器,避免无效查询,提高效率。
如果你想,我可以进一步讲解接下来的 NVMe Management Dword 1(图 95)及其错误选择位的具体作用,以及命令的响应数据结构格式和用途。是否继续?