Group 5 测试 System Memory Structure
Test 5.1 – Page Base Address and Offset (PBAO)
测试步骤
- Host发送Identify command(包含正确的PRP entry)
期望结果
- SSD正常返回CQ;
Test 5.2 – Completion Queue Entry
测试步骤
- Host创建2个IO SQ以及1个对应的IO CQ;
- Host发送1个write command到第一个IO SQ;
- Host发送1个write command到第二个IO SQ;
- Host连续向第一个IO SQ发送write command,直到数量达到该SQ支持的最大命令数量;
期望结果
- 针对每一个命令,SSD正常返回CQ;
- SSD针对某个命令返回的CQ,其Dword 2中的Submission Queue Identifier (SQID)字段(bits 31:16),为提交该命令的SQ;
- CQ Dword3中的Phase Tag (P)字段 (bit 16),在第一轮CQ返回时被置为1,在第二轮CQ返回时被清为0;
- CQ Dword3中的Command Identifier (CID)字段(bits 15:00),与Host提交的命令到SQ时分配的command id匹配;
Test 5.3 – Status Field Definition
测试步骤
- Host发送Identify Command给SSD;
- SSD返回数据以后,从Admin CQ中提取该命令对应的CQ Entry并解析;
期望结果
- SSD正常回复CQ;
- CQ的Status Code Type (SCT)字段为0h,Status Code (SC)字段为0h — 代表命令执行成功;
Test 5.4 – Generic Command Status Definition
测试步骤
- 针对上面两张表里列出的每一种status code,Host发送相应命令使SSD能够在CQ中回复相应的Status Code;
期望结果:
- SSD正常回复CQ;
- CQ的Status Code Type (SCT)字段为0h,Status Code (SC)字段内容与Host发送命令期望产生的结果匹配;
Test 5.5 – Command Specific Error Definition
当Status Code Type =01h (Command specific Errors)时,代表发生了与某个command opcode有关的错误,需要进一步干预,相关的错误定义在下表中。
针对下面两张表的定义,Host发送相应命令使SSD能够在CQ中回复相应的Status Code。
Case 1: Abort Command Limit Exceeded
测试步骤
- 检查Identify Controller Data Structure获取Abort Command Limit Exceed value (n);
- Host发送n+1个Abort command给SSD;
期望结果:
- 针对所有Abort command,SSD正常返回CQ;
- 只有一个abort command的SCT=03h;
Case 2:Asynchronous Event Request Limit Exceeded
测试步骤:
- 检查Identify Controller Data Structure获取Asynchronous Event Request Limit Exceed value (n);
- Host发送n+1个Asynchronous Event Request command给SSD;
期望结果:
- 针对所有Asynchronous Event Request command,SSD正常返回CQ;
- 只有一个Asynchronous Event Request command的SCT=05h;
Case 3:Invalid Firmware Slot
测试步骤
- 检查Identify Controller Data Structure的Firmware Update字段获取SSD支持的Firmware slots(n);
- Host发送Firmware Commit,将Slot ID设置为 >n;
- 如果SSD支持多个slots,检查Slot 1是否为只读。如果是,发送一个Firmware Commit到slot 1。如果Slot 1不是只读,本测试无效;
期望结果:
- SSD正常返回CQ;
- SCT=06h;
Case 4:Feature Identifier Not Saveable
测试步骤
- Host针对每一个支持的Feature ID;发送Get Feature Command;
- 针对“Not Saveable“的Feature,发送Set Feature Command去尝试save feature;
期望结果
- SSD正常返回CQ;
- SCT=0Dh;
Case 5: Feature Not Changeable
测试步骤
- Host针对每一个支持的Feature ID;发送Get Feature Command;
- 针对“Not Changeable“的Feature,发送Set Feature Command去尝试change feature;
期望结果
- SSD正常返回CQ;
- SCT=0Eh;
Case 6: Feature Not Namespace Specific IV=1
测试步骤
- Host发送Set Feature – Interrupt Vector Configuration command给SSD,设置IV=1,CD=0;
期望结果:
- SSD正常返回CQ;
- SCT=0Fh;
Case 7:Overlapping Range
测试步骤
- Host发送一个带有overlapping LBA range的Set Feature command给SSD;
期望结果
- SSD正常返回CQ;
- SCT=14h;
Test 5.6 – Media and Data Integrity Errors Definition
测试步骤
- 针对上面2个表格里定义的每一个Status Code,Host发送相应命令使SSD能够在CQ中回复相应的Status Code;
期望结果
- SSD正常返回CQ;
- SCT=02h, Status Code (SC)字段内容与Host发送命令期望产生的结果匹配;