NVME Reset 分为以下几种:①NVM Subsystem Reset;②Controller Reset; ③Queue Level Reset;④Power Cycle Reset

1.NVME Subsystem Reset

主电源应用于 NVM 子系统;4E564D65h (“NVMe”)被写到NSSR.NSSRC字段;使用 NVMe 管理接口规范中定义的方法请求;或者厂商定义的特殊事件发生时,NVM 子系统将会reset。

当NVM子系统复位时,整个NVM子系统将被重置。这包括在构成NVM子系统的所有控制器Controller level层次的重置,禁用与构成NVM子系统的所有控制器关联的持久内存区域,以及由NVM子系统的所有PCI Express端口转换到检测LTSSM状态。

在 NVM 子系统通电期间发生 NVM 子系统复位可以由 NVM 子系统复位后 CSTS.NSSRO 字段的初始值报告。 主机软件可以使用该字段来确定与控制器的突然失去通信是否是由于 NVM 子系统复位还是某些其他条件造成的。

主机软件通过写入NSSR.NSSRC字段来启动NVM子系统重置的能力是由CAP.NSSRS字段的状态指示的控制器的可选能力。通过不向构成NVM子系统的一个或多个控制器提供该功能,实现可以保护NVM子系统免受意外重置。

导致 NVM 子系统复位的供应商特定事件的发生旨在允许实现从阻止继续正常操作的严重 NVM 子系统内部错误中恢复(例如,致命的硬件或固件错误)。

2.Controller Reset

有五种方法可以启动控制器级别重置:

NVM Subsystem Reset

常规复位(即 PCI Express 热复位、暖复位或冷复位)

PCI Express 事务层数据链路关闭状态

Function Level Reset(如PCI reset)

控制器复位(即 CC.EN 从“1”转换为“0”)

控制器级别复位的时候,会产生如下动作:

控制器停止处理任何未完成的管理或 I/O 命令

删除所有的IO CQ/SQ

控制器进入空闲状态。 完成后,CSTS.RDY 被清除为“0”

除以下情况,所有控制器寄存器和内部控制器状态都将复位:管理队列寄存器(AQA、ASQ 或 ACQ)不会作为控制器重置的一部分进行重置;控制器存储器缓冲存储器空间控制寄存器 (CMBMSC) 作为控制器复位和功能级复位的一部分而复位;持久性存储器区域存储器空间控制寄存器 (PMRMSC) 不会作为控制器复位的一部分进行复位。

③ Controller Level Reset后主机的动作:

应根据需要更新寄存器状态;

设置 CC.EN 为 ‘1’

等待 CSTS.RDY 设置为“1”

根据需要使用管理命令配置控制器

根据需要创建 I/O 完成队列和 I/O 提交队列

继续正常的 I/O 操作。

需要注意的是,除controller reset之外的所有Controller Level重置情况都会导致控制器立即失去与主机的通信。 在所有这些情况下,控制器无法指示任何中止或更新任何完成队列条目

3.QUEUE Level Reset

主机可以通过重置它们来reset和/或重新配置 I/O 提交和 I/O 完成队列。 通过删除然后重新创建队列来执行队列级别重置。 在此过程中,主机应等待发送到相应 I/O 提交队列的所有未决命令完成。 为了执行重置,主机向管理队列提交删除 I/O 提交队列或删除 I/O 完成队列命令,指定要删除的队列的标识符。 命令成功完成队列删除操作后,主机然后通过提交创建 I/O 提交队列或创建 I/O 完成队列命令重新创建队列。 在创建Q的过程中,主机可以修改queue的属性。

主机应确保相应的 I/O CQ/SQ在删除该队列之前处于空闲状态。 提交队列删除命令会导致控制器中止任何挂起的命令; 这可能会也可能不会导致IOSQ entry中挂起的命令中止。 需要注意的是,如果对 I/O CQ执行队列级别重置,则应在 I/O CQ重置之前删除与该 I/O CQ相关联的 I/O SQ,并在 I/O SQ重新创建之后创建I/O CQ。 没有与相应 I/O CQ关联的 I/O SQ的行为是未定义的。

NVME Reset相关推荐

  1. NVME CLI -- nvme 命令查看NVME设备内部状态

    文章目录 NVME 和 AHCI 性能比较 NVME-CLI nvme工具使用 1. 安装 2. 命令综述 3. 基本命令演示 4. NVME 固件设备升级 近期在做一些rocksdb on 新硬件的 ...

  2. 【协议】NVMe over RoCE 初探 SATA接口(AHCI协议)、PCIe 接口(NVMe 协议)

    简略 详细 RDMA RDMA网络配置 硬/软件信息 RDMA驱动安装 验证RDMA连通性 NVMe Initiator 和 target 配置 target 端配置 initiator 端配置 配置 ...

  3. 【协议】NVMe over RoCE 初探 SATA、PCIe 接口和AHCI、NVMe 协议

    原文:NVMe over RoCE 初探 - 知乎 常见的 SSD 主要分为 SATA和 PCIe 接口,其接口协议对应着 AHCI.NVMe 协议.相比于最原始的 ATA 协议,AHCI 有 2 个 ...

  4. PCIe和NVMe SSD初始化过程简介

    1.PCIe初始化流程 PCIe硬件初始化完成的标志是盘进入最大速率L0状态,进入L0状态后,主机和盘就能正常使用TLP报文进行数据传输.参见图1. 从状态机可以看到,盘进入L0只能是通过Config ...

  5. Linux下HDD及NVME操作命令

    [HDD升级FW ] hdparm --yes-i-know-what-i-am-doing --please-destroy-my-drive --fwdownload ${new_FW} /dev ...

  6. 嵌入式Linux应用与开发——内核配置选项含Linux最新版本kernel下载后续操作

    下载官网的最新Linux内核版本,Linux虚拟机中Ubuntu 下载速度慢,更换镜像源后使下载速度正常.这是一个.tar.xz文件,我们要先来解压它.下面是下载内核解压文件编译内核配置内核的全过程. ...

  7. SPDK: Block Device Layer Programming Guide 块设备层编程指南

    文章目录 前言 Target Audience 目标受众 Introduction 简介 Basic Primitives 基本原语 Initializing The Library Library初 ...

  8. nvme-cli常用指令

    NVMe management command line interface 1.下载地址 https://github.com/linux-nvme/nvme-cli 2.安装 unzip nvme ...

  9. linux 硬盘、RAID相关命令详解

    本文主要介绍linux下查看各种硬盘信息的命令如何使用,如何快速的查到自己想要的硬盘相关信息,各种命令做一个汇总. Nvme-cli Q1:如何查看nvme写缓存打开否: [root@node83 p ...

最新文章

  1. python 列表生成式、lower()和upper()的使用
  2. linux中ramdisk的使用
  3. linux配置时间同步
  4. SAP Hybris Discount group,折扣组,折扣记录,用户组几组概念的关联
  5. share-Nothing原理
  6. java 文件解析异常_java中异常的解析
  7. 笔记本 win11 64位专业版iso文件v2021.07
  8. key store是否创建_EKS-实践一 创建EKS集群
  9. 2D纹理与3D模型共存时的渲染问题
  10. 软件工程期末复习题库
  11. 如何给共享文件夹设置密码?共享文件夹加密的方法
  12. 计算机网络专业认识和理解,计算机网络专业认识.docx
  13. 学生个人html静态网页制作 基于HTML+CSS+JavaScript+jquery仿苏宁易购官网商城模板
  14. wifi上行下行速度测试_怎么测试上行速度,直观的测试 WiFi上下行宽带
  15. matlab标题斜体_matlab 斜体 正体
  16. 无情刀永不知错,无缘分只叹奈何
  17. nvme 驱动详解[转]
  18. 李彦宏说百度吹的牛都实现了,还扔出来一个ACE计划
  19. 原来Oracle也不喜欢“蜀黍(r6笔记第54天)
  20. 重新注册系统所有dll文件

热门文章

  1. 感谢信 | 2023一封封双向奔赴的温暖纷至沓来
  2. 使用unity实现计算器功能
  3. docker2-镜像原理及创建新的镜像
  4. 如何设置excel中一部分表格显示但是不打印?
  5. 程序封装真的是令人讨厌_网络上最令人讨厌的黑暗模式
  6. 炫酷!从未见过如此Q弹的Switcher
  7. WPF 延时操作实现 --- Application.DoEvents()
  8. R语言 观测异常值并改进
  9. ORA-12170:TNS:连接超时错误处理
  10. 彩票,双色球,模拟开奖小项目