Group 6 测试 Controller Architecture
Test 6.1 – Controller Level Reset – Conventional Reset
测试步骤
- Host对SSD执行Conventional Reset
- PCIe warm reset (如果可行);
- PCIe Cold reset
- Reset完成以后,Host发送1个write command和1个read command给SSD;
期望结果
- Reset以后,SSD可以正常完成write/read command;
- 当Host启动reset以后, SSD应该:
- 停止所有当前Admin、IO Command;
- 删除所有的IO SQ;
- 删除所有的IO CQ;
- SSD进入Idle state,reset完成后RDY=0h;
- NVMe spec section3里定义的所有register,以及NVMe 部分内部状态都被reset;
Test 6.2 – Controller Level Reset – Function Reset
测试步骤
- Host读取FLRC;
- Host读取PXDC PCIe寄存器的Initiate Function Level Reset字段;
- Host对该字段写1,启动FLR;
- Reset完成以后,Host发送1个write command给SSD;
期望结果
- FLRC=1,代表支持FLR;
- PXDC PCIe寄存器的Initiate Function Level Reset字段初始值为0;
- Reset以后,SSD可以正常完成write command;
- 当Host启动FLR以后, SSD应该:
- 停止所有当前Admin、IO Command;
- 删除所有的IO SQ;
- 删除所有的IO CQ;
- SSD进入Idle state,reset完成后RDY=0h;
- NVMe spec section3里定义的所有register,以及NVMe 部分内部状态都被reset;
Test 6.3 – Controller Level Reset – Controller Reset
测试步骤
- Host对SSD的EN写0;
- Reset完成以后,Host发送1个write command和1个read command给SSD;
期望结果
- Reset以后,SSD可以正常完成write/read command;
- 当Host启动Controller Reset以后, SSD应该:
- 停止所有当前Admin、IO Command;
- 删除所有的IO SQ;
- 删除所有的IO CQ;
- SSD进入Idle state,reset完成后RDY=0h;
- 除Admin Queue Registers (AQA,ASQ,ACQ)以外,NVMe spec section3里定义的所有register,以及NVMe 部分内部状态都被reset;
Test 6.4 – Controller Level Reset – NVMe Subsystem Reset
测试步骤
- Host读取NSSRS确定SSD是否支持写入CAP.NSSRC字段。如果NSSRS=0,本测试无效,如果NSSRS=1,继续步骤3;
- Host读取并记录NSSRO, 如果该值非0,对SSD执行一次重新上电然后重新开始本测试;
- Host对NSSRC写入“4E564D65h”(NVMe);
- Reset完成以后,PCIe链路重新建立,SSD被使能,Host发送Identify Command;
期望结果
- Reset以后,SSD可以正常回复Identify command;
- 读取NSSRO,确保值为1;
- 当Host启动NVM Subsystem Reset以后, SSD应该:
- 停止所有当前Admin、IO Command;
- 删除所有的IO SQ;
- 删除所有的IO CQ;
- SSD进入Idle state,reset完成后RDY=0h;
NVMe spec section3里定义的所有register,以及NVMe 部分内部状态都被reset;