NVMe Reset

2024-09-02 08:28
文章标签 reset nvme

本文主要是介绍NVMe Reset,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Reset在PCIe设备中,是很重要的基础流程,参考NVMe Spec协议,定义了三种类型的复位:

  • NVM Subsystem Reset
  • Controller Level Reset
  • Queue Level

 下面针对这三种类型分别进行介绍:

1. NVM Subsystem Reset

触发NVM Subsystem Reset有以下几种方式:

  • NVM子系统上电
  • Host向Controller Register NSSR.NSSRC字段写入4E564D65h(“NVMe”);
  • 通过NVMe-MI定义的NVM Subsystem Reset方法执行Reset动作;
  • Vendor自定义的事件发生。

        当NVM Subsystem Reset发生时,整个NVM Subsystem将会复位。这包括组成NVM子系统上所有的控制器,应该发生Controller Level Reset。禁用NVM子系统中所有控制器的Persistent Memory Region,以及将NVM子系统的PCIe端口LTSSM状态机转换到Detect状态。

        NVM Subsystem Reset以后,Host可以通过CSTS.NSSRO字段来判断NVM子系统复位或其它情况。

2. Controller Level Reset

以下几种方法均可触发Controller Level Reset:

  • NVM Subsystem Reset;
  • Conventional Reset(参考PCIe里的常规复位,包括Cold Reset、Warm Reset);
  • Function Level Reset(参考PCIe协议规范);
  • Controller Reset (i.e., CC.EN transitions from '1' to '0').

当控制器触发Controller Level Reset将会执行以下动作:

  • Controller停止处理任何Outstanding Admin 或 I/O Command;
  • 所有I/O Submission Queue将会被删除(Host下发Delete SQ);
  • 所有I/O Completion Queue将会被删除(Host下发Delete CQ);
  • Controller进入Idle状态后,CSTS.RDY清为‘0’;
  • 所有的Controller Register和内部Controller状态复位到初始状态,除了以下这些:
  1.  Admin Queue registers (AQA, ASQ, or ACQ)不会被复位;
  2.  Controller Memory Buffer Memory Space Control register(CMBMSC)在Controller Reset或Function Level Reset不会被复位;
  3. Persistent Memory Region (PMRMSCU和PMRMSCL)在Controller Reset中不会被复位。

在Controller Level Reset后,Host和Controller要继续通信,Host应该执行以下流程:

  • 适当更新寄存器状态;
  • 将CC.EN设置为1;
  • 等Controller将CSTS.RDY设置为‘1’;
  • 根据需要使用Admin命令配置控制器;
  • 根据需要创建 I/O Completion Queues和 I/O Submission Queues;
  • 继续进行正常的I/O操作。

        需要注意的是,除了Controller Reset以外,所有其它Controller Level Reset,都会导致控制器立即与主机失去通信。在所有这些情况下,控制器无法指示任何 Abort 或更新任何CQE。

3. Queue Level

        Host可以通过Reset 和/或 重新配置I/O Submission 和I/O Completion Queue来进行Queue Level Reset。Queue Level Reset的操作是先删除Queue,然后重新创建它。在此过程中,主机应该等待所有对适当的I/O Submission Queue的pending命令完成。要执行Reset操作,主机向Admin Queue提交删除I/O提交队列或删除I/O完成队列的命令,指定要删除的Queue的标识符。在成功完成Queue删除操作后,主机然后通过提交Create I/O Submission Queue或Create I/O Completion Queue命令重新创建队列。作为创建操作的一部分,主机可以修改队列的属性。

        Host应确保在Delete Queue之前,相应的I/O Submiss Queue或I/O Completion Queue处于空闲状态。提交Delete Queue的命令会导致控制器中任何正在运行的命令被Abort;这可能导致完成队列中出现一个或多个已取消CQE(Completion Queue Entry)。

        请注意,如果对I/O Completion Queue执行Queue Level Reset,则应在Reset和重新创建I/O Completion Queue之前删除正在使用该队列的I/O Submission Queue。没有对应的I/O Completion Queue 的I/O Submission Queue的行为是未定义的。

这篇关于NVMe Reset的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129476

相关文章

一文介绍NVMe和NVMe-of

NVMe(Non-Volatile Memory Express)是一种高性能的存储协议,专为与非易失性存储介质如SSD(固态硬盘)通信而设计。NVMe协议通过PCIe(PCI Express)总线实现,能够提供比传统SATA或SAS接口更高的数据传输速率和更低的延迟。 NVMe技术的主要特点包括: 1. 高度并行的数据传输能力:NVMe支持多达64,000个命令队列,每个队列可以有高达64,

Kioxia的NVMe RAID卸载有何亮点?

随着每一代固态硬盘SSD的速度不断提升,RAID阵列面临着一个重大的挑战:如何有效地维持并扩展性能。即使是通过专门的RAID卡来处理RAID操作的情况下,例如在RAID 5阵列中,简单的写请求也需要涉及两次读取和两次写入不同的SSD。如果没有硬件加速,来自读取操作的数据需要返回到CPU和主内存进行进一步处理,然后才能执行写操作。 RAID 5: 将数据和相对应的奇偶校验信息分别存

ssh_exchange_identification: read: Connection reset by peer

最近为了抢自如的房子在京东云服务器上面跑爬虫脚本,今天突然无法登陆了,ssh 连接报错ssh_exchange_identification: read: Connection reset by peer,经过检查,我的 ip 被 deny 了. 要解决此问题,请进行如下配置检查和修改: 通过 云服务器控制台的管理终端 进入系统。 通过 cat 等指令查看 /etc/hosts.deny中是

STM32启动文件 Reset_Handler函数

该文件主要实现目的: 设置初始SP设置初始PC=Reset_Handler设置向量表入口地址,并初始化向量表调用SystemInit,把系统时钟配制成72M,SystemInit在库文件system_stm32f10.c定义调转到标号_main,最终来到C程序文件 ; Reset handlerReset_Handler PROCEXPORT Reset_Handler

微知-如何重启云服务器bmc?mc reset cold

BMC baseboard management controller 服务器上的管理控制器 负责监控和控制服务器状态。 通过ipmitool可以管理和控制它 我们知道对云服务器开关机用ipmitool 使用power on(直接上电),power off(直接断电),power cycle(冷重启 系统会走退出流程 会等待完全关闭后重启 属于正常关机 相当于按下开关 关机后按下开关开启),pow

【OCPP】ocpp1.6协议第5.14 Reset章节的介绍及翻译

目录 5.14 重置Reset-概述 概述 消息格式 操作流程 重置类型 消息示例 错误处理 注意事项 安全性 5.14 重置Reset-原文译文 5.14 重置Reset-概述 在OCPP 1.6协议中,第5.14章节“Reset”主要讲述了中央系统(CSMS, Central System)如何向充电站(CS, Charge Station)发送重置指令,并期望

post请求错误net::ERR_CONNECTION_RESET解决

也许导致这种错误的方式有很多,我遇到的这种错误是因为post请求时提交的数据过多而导致的。 解决办法:修改tomcat的配置文件server.xml <Connector port="8080" protocol="HTTP/1.1"maxHttpHeaderSize="8192" useBodyEncodingForURI="true"maxPostSize="20971520"maxT

NVME 类IO命令

一、reservation Acquire command 该命令用于在一个NS上获取一个“预定”,抢占一个“预定”并持有NS,并终止持有NS的“预定”。 该命令使用CDW10和Reservation Acquire structure,使用PRP1和PRP2(或者sgl) 携带的信息CDW10  RTYPE(除去预定可xx,其他都被禁止)  另外一个信息是Reservati

nginx 8051#0: *4 recv() failed (104: Connection reset by peer) while reading response header from u

环境    php7   nginx1.8.0    nginx   报错  500  GATWAY网关错误 2017/08/28 10:45:42 [error] 7975#0: *333 recv() failed (104: Connection reset by peer) while reading response header from upstream, clien

微信小程序请求服务器报ERR_CONNECTION_RESET

排查思路 1.域名是否配置或跳过 2.域名是否备案 3.证书是否有效 4.服务器中间件配置证书是否生效 5.服务器中间件转发配置是否生效 6.接口是否正常 本人遇到问题描述,通过浏览器访问本人网站,https,get请求可以通,小程序wx.request调用同样的地址却报-101 ERR_CONNECTION_RESET 通过 更新服务器openssl版本, nginx