Controller Shutdown 与 NVM Subsystem Shutdown

  • 3.6Shutdown处理
    • 3.6.1基于内存传输的Controller Shutdown
    • 3.6.2基于消息传输的Controller Shutdown
    • 3.6.3NVM Subsystem Shutdown
      • 3.6.3.1只有一个Domain的NVM子系统的NVM Subsystem Shutdown
      • 3.6.3.2具有多个Domain的NVM子系统的Domain Shutdown

3.6Shutdown处理

本节介绍了在断电条件之前进行shutdown处理的推荐步骤。

3.6.1基于内存传输的Controller Shutdown

建议主机在即将发生断电或shutdown情况时按照本节中的步骤执行控制器的有序shutdown。

主机应按顺序执行以下操作以对控制器 normal shutdown:

  1. 如果控制器已经enable(即 CC.EN 设置为“1”):
      a.停止向控制器提交任何新的 I/O 命令并允许任何未完成的命令完成;
      b.如果控制器实现了 I/O 队列,那么主机应该使用 Delete I/O Submission Queue 命令删除所有 I/O Submission Queue。Delete I/O Submission Queue 命令成功完成的结果是任何剩余未完成的命令都被中止;
      c.如果控制器实现了 I/O 队列,那么主机应该使用 Delete I/O Completion Queue 命令删除所有 I/O Completion Queue;
  2. 主机应将 Shutdown Notification(CC.SHN) 字段设置为 01b 以指示正常的控制器shutdown操作。控制器通过将 Shutdown Status(CSTS.SHST) 字段更新为 10b 并将 Shutdown Type(CSTS.ST) 字段清除为“0”来指示shutdown处理何时完成。

主机应按顺序执行以下操作以实现 abrupt shutdown:

  1. 如果控制器已enable(即CC.EN设置为“1”),则停止向控制器提交任何新的I/O命令;
  2. 主机应将 Shutdown Notification(CC.SHN) 字段设置为 10b 以指示 abrupt shutdown 操作。控制器通过将 Shutdown Status(CSTS.SHST) 字段更新为 10b 并将 CSTS.ST 清为“0”来指示shutdown处理何时完成。

要进入 D3 power state,应遵循为控制器normal shutdown的关闭步骤。

建议主机至少等待 Identify Controller data structure 中报告的 RTD3 Entry Latency 以完成shutdown操作;如果 RTD3 Entry Latency 中报告的值为 0h,则主机应至少等待一秒。不建议通过 CC.EN 字段disable控制器。这会导致 Controller Reset,这可能会影响完成shutdown处理所需的时间。在shutdown处理过程中,控制器可能会中止任何命令,状态码为 Commands Aborted due to Power Loss Notification。

当 CSTS.ST 清为“0”时,可以安全地给控制器断电,并且 CSTS.SHST 表示控制器shutdown处理已完成(无论 CC.EN 的值如何)。在 CC.EN 从“0”变为“1”之前,控制器断电仍然是安全的。 要在控制器报告控制器shutdown处理完成(即 CSTS.ST 清0且 CSTS.SHST 设置为 10b)后使用 CC.EN 开始在控制器上执行命令:

  • 如果 CC.EN 设置为“1”,则该控制器需要进行Controller Reset(CC.EN 从“1”清为“0”);要么
  • 如果 CC.EN 被清为“0”,则需要enable控制器(即,CC.EN 从“0”设置为“1”)。

然后应该在该控制器上执行初始化序列。

在控制器shutdown之前主机是否中止所有未完成的命令到 Admin Queue是一个实现选择。当控制器报告shutdown处理完成时,唯一应该在 Admin Queue 中未完成的命令是Asynchronous Event Request 命令。

3.6.2基于消息传输的Controller Shutdown

要启动控制器的shutdown,主机应使用 Property Set 命令(请参阅第 6.6 节)将 Shutdown Notification (CC.SHN) 字段设置为:

  • 01b 启动 normal shutdown 操作;要么
  • 10b 启动 abrupt shutdown。

在主机启动控制器shutdown后,主机可以在 NVMe Transport 级别断开连接,或者主机可以选择轮询 CSTS.SHST 以确定控制器何时完成关闭(即,控制器不应在 NVMe Transport 级别启动断开连接)。在启动 shutdown 之前主机是否中止所有未完成的命令是一个实现选择。

CC.EN 字段不用于关闭控制器(即,它用于 Controller Reset)。

从控制器 shutdown 开始到:

  • 发生 Controller Level Reset;或者
  • 如果控制器是动态的,则从 NVM 子系统中移除,

控制器应:

  • 仅处理 Fabrics 命令(参见Figure 375);且
  • 禁用 Keep Alive timer(如果支持)。

CC.EN 转换为“0”后(即,由于 Controller Level Reset),主机和控制器之间的关联应保留至少 2 分钟。在此时间之后,如果尚未重新enable控制器,则可能会删除关联。

3.6.3NVM Subsystem Shutdown

NVM Subsystem Shutdown是指由一个Controller发起的对一个Domain或NVM Subsystem中的所有控制器进行shutdown操作。

3.6.3.1只有一个Domain的NVM子系统的NVM Subsystem Shutdown

NVM 子系统内所有控制器的 normal shutdown(即 normal NVM Subsystem Shutdown)由以下方式启动:

  • 当 CAP.CPS 设置为 11b 时,主机将值 4E726D6Ch (“Nrml”) 写入 NSSD.NSSC;或
  • 向 Management Endpoint(请参阅 NVM Express Management Interface Specification)发出 NVMe-

MI Shutdown 命令,指定 normal shutdown。

对于此次 normal NVM Subsystem Shutdown的 NVM 子系统中的每个控制器,如果:

  • CSTS.SHST 设置为 00b;且
  • 存在未完成的 Asynchronous Event Request 命令,

则控制器应在关闭控制器之前发出 Normal NVM Subsystem Shutdown 事件。

NVM 子系统内所有控制器的 abrupt shutdown(即 abrupt NVM Subsystem Shutdown)由以下方式启动:

  • 当 CAP.CPS 设置为 11b 时,主机将值 41627074h(“Abpt”)写入 NSSD.NSSC;要么
  • 向 Management Endpoint(请参阅 NVM Express Management Interface Specification)发出 NVMe-MI Shutdown 命令,指定 abrupt shutdown。

对于 normal shutdown 或 abrupt NVM Subsystem Shutdown,当 CSTS.ST 设置为“1”并且 CSTS.SHST 指示shutdown处理完成(即,CSTS.SHST 设置为 10b)时,在 NVM 子系统中的任何控制器上关闭 NVM 子系统是安全的。在发生 NVM Subsystem Reset 之前,关闭 NVM 子系统的电源仍然是安全的。

如果 NVM 子系统内正在处理或完成normal或abrupt NVM Subsystem Shutdown(即,在 NVM 子系统中的所有控制器上,CSTS.ST 设置为“1”并且 CSTS.SHST 设置为 01b 或 10b),则:

  • NVM Subsystem Reset 将 NVM 子系统中所有控制器中的 CSTS.SHST 清除为 00b;并且
  • 任何其他类型的 Controller Level Reset 对该 NVM Subsystem Shutdown 的处理没有影响。

3.6.3.2具有多个Domain的NVM子系统的Domain Shutdown

此控制器和关联域内的所有控制器上的 normal NVM Subsystem Shutdown 由以下方式启动: - 当 CAP.CPS 设置为 10b 时,主机将值 4E726D6Ch ("Nrml") 写入 NSSD.NSSC;或者 - 向 Management Endpoint(请参阅 NVM Express Management Interface Specification)发出 NVMe-MI Shutdown 命令,指定 normal shutdown。

对于此 normal NVM subsystem shutdown 的域中的每个控制器,若:

  • CSTS.SHST 清为 00b;并且
  • 存在未完成的 Asynchronous Event Request 命令,

则控制器应在关闭控制器之前发出 Normal NVM Subsystem Shutdown 事件。

对此控制器和关联域内的所有控制器的 abrupt NVM Subsystem Shutdown 由以下方式启动:

  • 当 CAP.CPS 设置为 10b 时,主机将值 41627074h(“Abpt”)写入 NSSD.NSSC;要么
  • 向 Management Endpoint(请参阅 NVM Express Management Interface Specification)发出 NVMe-MI Shutdown 命令,指定 abrupt shutdown。

对于域上的normal或abrupt NVM Subsystem Shutdown,当 CSTS.ST 设置为“1”并且 CSTS.SHST 指示shutdown处理完成(即 CSTS.SHST 设置为 10b)时,在域中的任何控制器上对域进行掉电是安全的。在该域上发生 NVM Subsystem Reset 之前,域掉电仍然是安全的。

如果在域中处理或完成normal或 abrupt NVM Subsystem Shutdown(即,在域中的所有控制器上,CSTS.ST 设置为“1”并且 CSTS.SHST 设置为 01b 或 10b),则:

  • NVM Subsystem Reset 将域中所有控制器中的 CSTS.SHST 清除为 00b;并且
  • 任何其他类型的 Controller Level Reset 对该shutdown的处理没有影响。

【NVMe2.0b 10】Controller Shutdown 与 NVM Subsystem Shutdown相关推荐

  1. 【NVMe2.0b 3】NVM 控制器架构模型

    NVM 控制器架构模型 3.1.1控制器模型 3.1.2Controller Types 3.1.2.1I/O Controller 3.1.2.1.1Command Support 3.1.2.1. ...

  2. 【NVMe2.0b 5】NVM Subsystem

    NVM Subsystem 3.2NVM子系统实体 3.2.1命名空间 3.2.1.1命名空间概述 3.2.1.2Valid and Invalid NSIDs 3.2.1.3Allocated an ...

  3. 【NVMe2.0b 12】NVM 容量模型

    NVM 容量模型 3.8NVM容量模型 3.8.1概述 3.8.2Media Unit的组织示例 3.8.2.1简单的NVM子系统 3.8.2.3横向组织的双NAND NVM子系统 3.8.3容量报告 ...

  4. 【NVMe2.0b 15】NVMe SR-IOV

    NVMe SR-IOV PCIe SR-IOV 系列导航 基于 PCIe 的 NVM transport 实施结构 关键词定义 支持 SR-IOV 的 NVM Subsystem 结构 Virtual ...

  5. 【NVMe2.0b 2】NVMe 结构理论

    2操作理论 NVM Express 可扩展接口旨在满足使用基于 PCI Express 的固态驱动器或光纤连接设备的存储系统的需求.该接口提供了优化的命令提交和完成路径.它通过支持多达 65,535 ...

  6. 【NVMe2.0b 6】NVMe 队列模型

    NVMe 队列模型 3.3NVM Queue Models 3.3.1基于内存的传输队列模型 3.3.1.1队列设置与初始化 3.3.1.2Queue的使用 3.3.1.2.1Completion Q ...

  7. 【NVMe2.0b 9】控制器初始化过程

    控制器初始化过程 3.5控制器初始化 3.5.1基于内存传输的控制器初始化 3.5.2基于消息传输的控制器初始化 3.5.3Controller Ready Modes During Initiali ...

  8. linux中shutdown命令,Linux中shutdown命令起什么作用呢?

    摘要: 下文讲述Linux中shutdown的功能说明,如下所示: shutdown命令功能: 用于对linux进行系统关机操作(同时也会关闭所有程序) shutdown命令的语法格式: shutdo ...

  9. linux中shutdown命令,linux下shutdown命令有什么作用 shutdown命令使用方法

    Linux系统下shutdown命令是基本命令之一,主要用来进行关机程序.下面小编就跟大家说说linux下shutdown命令有什么作用?有需要的用户可以参考以下教程来设置. linux的shutdo ...

最新文章

  1. 刷脸,带来了方便,也带来了隐患,不可不防呀!
  2. A query was run and no Result Maps were found
  3. goland go test_Go单元测试实践一,快速上手
  4. MeayunDB学习笔记(一) MeayunDB介绍及安装
  5. 学习:ASP.NET中App_Code,App_Data等文件夹的作用(转)
  6. ffmpeg在android上输出滑屏问题处理
  7. python 连续三个数满足条件_计算满足条件的连续值数(Pandas Dataframe)
  8. composer 安装dev包_「PHP编程」如何搭建私有Composer包仓库?
  9. 计算机网络物理层之物理层之下的传输媒体
  10. Raider:Web身份认证测试框架
  11. Hibernate入门案例
  12. 《人.地.城》读书笔记
  13. tomcat乱码怎么解决
  14. java sdk 1.8环境变量_java sdk环境变量怎么配置
  15. 使用imageIO获取和修改图片的exif信息
  16. 【HTML】语义化标签
  17. 转载:stm32的引脚有两种用途
  18. matlab交流电路仿真,【2017年整理】7基于MATLAB的交流电机仿真.ppt
  19. 由感而发:离职的第四个理由
  20. 嵌入式开发过程中,Linux系统下刷机工具

热门文章

  1. sql语句实现查询实例
  2. css英文字体 在线引用,css字体英文名称(示例代码)
  3. [CVPR2021]Birds of a Feather: Capturing Avian Shape Models from Images
  4. java web 开发资料链接
  5. 借助网盘离线下载从官网下载DB2-Express C
  6. Civil 3d-快速转换C3D图形为CAD图形
  7. 使用 Docker 运行微信 PC 客户端
  8. 高能预警:SFDC安全技术大会将于11月19日在北京举办,岂安科技CEO罗启武受邀演讲
  9. 数据结构,关于链表的问题,为何直接free()不会造成断链。引用的好处
  10. 【TCP-IP详解卷1-协议】第一章 概述