第5章 管理接口命令集 - 页码109
你现在查阅到的是 图 98(续),也就是 Controller Health Status Changed Flags (CHSCF)
字段的 低 6 位(05:00) 的定义。这部分信息进一步丰富了控制器状态变化追踪的能力,是整个 NVMe-MI 健康监控机制的重要组成部分。
我们继续来做结构化解析和场景理解,帮助你深入掌握它的用途和逻辑。
✅ 图 98(下半部分):CHSCF Bit 位定义(Bits 05:00)
Bit 位 | 字段名 | Reset 默认值 | 说明 |
---|---|---|---|
05 | CECO(Controller Enable Change Occurred) | HwInit |
如果 CHDS.Controller Status 中 CECO 位的值发生变化,则将此位设为 1 |
04 | NSSRO(NVM Subsystem Reset Occurred) | HwInit |
如果 CHDS.Controller Status 中 NSSRO 位从 0 变为 1 ,此位设为 1 |
03 | Reserved | 0 | 保留位,不使用 |
02 | SHST(Shutdown Status) | 0 | 如果 CHDS.Controller Status 中 Shutdown Status 字段发生变化,则置为 1 |
01 | CFS(Controller Fatal Status) | HwInit |
如果 CHDS.Controller Status 中 CFS 位发生变化,则置为 1 |
00 | RDY(Ready) | 0 | 如果 CHDS.Controller Status 中 Ready 位发生变化,则置为 1 |
🧠 这些标志位都监控什么?
这些位基本上都对应于 Controller 的核心运行状态或健康状态:
状态 | 意义 |
---|---|
RDY(Ready) | 控制器是否处于就绪状态(CSTS.RDY) |
CFS(Fatal Status) | 控制器是否进入致命错误状态(CSTS.CFS) |
SHST(Shutdown Status) | 是否正在关机或关机已完成(CSTS.SHST) |
NSSRO(Subsystem Reset) | 是否发生了 NVM Subsystem Reset |
CECO(Enable 变化) | 控制器启用状态是否发生了变化(CC.EN) |
🔁 与 Controller Health 数据结构(CHDS)字段对应关系
我们可以补全前面位图映射关系:
CHSCF 位 | 对应 CHDS 字段 |
---|---|
00 RDY | CSTS.RDY |
01 CFS | CSTS.CFS |
02 SHST | CSTS.SHST |
04 NSSRO | Controller Status[NSSRO] |
05 CECO | Controller Status[CECO] |
这些位专门用来监控 控制器启用、关闭、复位、致命错误等系统级事件。
🔄 Reset 行为说明
💥 关键 Reset 行为总结如下:
类型 | 影响的对象 | 会重置哪些字段? |
---|---|---|
NVM Subsystem Reset | 所有 Management Endpoint + 所有 Controller | 重置对应实例的 CHSCF |
Controller Level Reset | 目标 Controller 及其关联的 CHSCF | 同样重置相关字段 |
Management Endpoint Reset | 目标 Management Endpoint | 重置其维护的 CHSCF 实例 |
📌 其他类型的 Reset(如 PCIe link reset)不应重置 CHSCF 字段!
💡 应用场景举例
场景 1:检测是否有控制器经历了关机
- 控制器使用
Controller Health Status Poll
命令。 - 设定
SHST
位为 1,CCF=1
。 - 如果某个控制器在响应数据中出现,说明其
Shutdown Status
在最近发生过变化。 - 下一轮轮询后,如果
CCF=1
,该标志会被清除,避免重复报告。
场景 2:检测是否有致命错误发生
- 检查 CHSCF 的 bit 01 (CFS),如果值为
1
,可进一步查询控制器状态位确认 CFS 位。
✅ 总结要点
要素 | 内容 |
---|---|
CHSCF 字段 | 用于标记 Controller Health 中字段的变动情况 |
位粒度追踪 | 包括温度变化、重启状态、就绪状态、致命错误、使能状态等 |
影响 Reset 范围明确 | 仅特定类型的 Reset 会清除对应实例的 CHSCF |
与 CHDS 联动 | 变动的字段对应在 CHSCF 中会设置为 1 |
配合 Poll 命令使用 | 可精确获取哪些控制器在哪些维度上发生过状态变化 |
如果你已经掌握了 CHSCF 的结构和用途,下一步我们可以一起看看 图 99 的映射位图(CHSCF 和 CHDS 之间的详细位关联表),帮助你一目了然每一位监控的对象。需要继续吗?