Group 1 Admin Command Set的第三项是Get Log Page command测试。
Get Log Page command用于要求SSD返回所需要的Log Page,通过命令DW10的Log Page Identifier(LID)指定,有效的LID包括:
Get Log Page Command包括的case如下:
Case 1:Supported LIDs
- 测试方法:
- Host发送Get Log Page command给SSD,遍历上表中所有该SSD支持的Mandatory的LID
- 期望结果:
- SSD返回Log以后,正确回复CQ
- 返回的Log Page信息与NVMe Spec相符
- 所有Reserved字段为0
Case 2: Unsupported Vendor Specific LIDs
- 测试方法:
- Host发送一个无效LID的Get Log Page command给SSD
- 期望结果:
- SSD返回CQ,SC的error code=09h (Invalid Log Page)
- 所有Reserved字段为0
Case 3: Reserved LIDs
- 测试方法:
- Host发送Get Log Page command给SSD,设置LID=00h或7fh
- 期望结果:
- SSD返回CQ,SC的error code=09h (Invalid Log Page)
- 所有Reserved字段为0
Case 4: NUMD/MDTS Conflict
- 测试方法:
- 检查SSD返回Identify Controller Data Structure里的MDTS(Maximum Data Transfer Size )值,如果该值为0(没有数据传输大小限制),该case无效
- 检查该SSD支持的NVMe版本,如果高于等于2.1,执行步骤1,如果低于等于1.2a,执行步骤2
- Host发送Get Log Page command给SSD,遍历上表中所有该SSD支持的Mandatory的LID,并设置Get Log Page command里的NUMDU(Number of Dwords)和NUMDUL(Number of Dwords Lower)使其大于MDTS;
- Host发送Get Log Page command给SSD,遍历上表中所有该SSD支持的Mandatory的LID,并设置Get Log Page command里的NUMDU(Number of Dwords)使其大于MDTS;
- 期望结果:
- SSD返回“Invalid Field in Command Error” 错误
Case 5: Get Error Information after Error
- 测试方法:
- Host发送Get Log Page command给SSD,将LID设置为01h (Error Information),并记录Error log entry的数量
- Host发送Identify Command,将CNS值设为Reserved
- 检查SSD返回CQ的Status Field的M位,如果值为1,该case无效 (M位=1代表还有更多的状态信息等待获取)
- Host发送Get Log Page command给SSD,将LID设置为01h (Error Information),并记录Error log entry的数量
- Host发送Identify Command,将CNS值设为Reserved
- 检查SSD返回CQ的Status Field的M位,如果值为1,该case无效 (M位=1代表还有更多的状态信息等待获取)
- Host发送Get Log Page command给SSD,将LID设置为01h (Error Information),并记录Error log entry的数量
- 期望结果:
- 如果M位被置,检查SSD在Error Information Log中上报错误,并且Error Log Entry数量增加。上报的错误可能与错误的Identify Command(将CNS值设为Reserved)不直接相关
Case 6: SMART Temperature Threshold
- 测试方法:
- Host发送Set Feature command将SSD的Critical Temperature Threshold设置为低于当前温度
- Host发送Get Log Page command给SSD,将LID设置为02h (SMART/Health Information)
- 期望结果:
- SSD在SMART/Health Information Log里上报Critical Temperature warning警告
Case 7: Data Units Read
- 测试方法:
- Host发送Get Log Page command给SSD,将LID设置为02h (SMART/Health Information),并记录Data Units Read值
- 下发1000个512Byte的Read命令
- Host发送Get Log Page command给SSD,将LID设置为02h (SMART/Health Information),并记录Data Units Read值,该值应该增加1
- 下发1000个512Byte的Compare命令
- Host发送Get Log Page command给SSD,将LID设置为02h (SMART/Health Information),并记录Data Units Read值,该值应该增加1
- 期望结果
- SSD返回的Data Unit Read值应该增加2,与执行过的Read/Compare命令能够对应;
Case 8: Data Units Written
- 测试方法:
- Host发送Get Log Page command给SSD,将LID设置为02h (SMART/Health Information),并记录Data Units Written值
- 下发2000个512Byte的Write命令
- Host发送Get Log Page command给SSD,将LID设置为02h (SMART/Health Information),并记录Data Units Written值,该值应该增加2
- 下发2000个512Byte的Write Uncorrectable命令
- Host发送Get Log Page command给SSD,将LID设置为02h (SMART/Health Information),并记录Data Units Written值,该值应该不增加
- 期望结果
- SSD返回的Data Unit Read值应该增加2,与执行过的Write命令能够对应; 同时 Write Uncorrectable命令的执行应该不会改变Data Units Written值;
Case 9: Power Cycle Count
- 测试方法:
- Host发送Get Log Page command给SSD,将LID设置为02h (SMART/Health Information),并记录Power Cycle值
- 重新上电SSD
- Host发送Get Log Page command给SSD,将LID设置为02h (SMART/Health Information),并记录Power Cycle值
- 期望结果
- SSD返回的Power Cycle值应该增加1
Case 10: NUMD Greater than Log Page Conflict
- 测试方法:
- 检查该SSD支持的NVMe版本,如果高于等于2.1,执行步骤1,如果低于等于1.2a,执行步骤2
- Host发送Get Log Page command给SSD,遍历上表中所有该SSD支持的Mandatory的LID,并设置Get Log Page command里的NUMDU(Number of Dwords)和NUMDL(Number of Dwords Lower)使其大于定义的Log Page Size;
- Host发送Get Log Page command给SSD,遍历上表中所有该SSD支持的Mandatory的LID,并设置Get Log Page command里的NUMDU(Number of Dwords)使其大于定义的Log Page Size;
- 期望结果:
- SSD正常返回Log Page,其size由NUMD或者NUMDU/NUMDL指定,其有效数据长度应该在0~Log Page Size之间,多余的部分应该用未定义的数据填充;
Case 11: Telemetry Host Initiated Valid Offset Create=1
- 测试方法:
- 检查Identify Controller Data Structure LPA字段的bit3,确定SSD是否支持Telemetry Host Initiated 和Telemetry Controller Initiated log page,如果该Bit为0,本case无效;
- Host发送Get Log Page command,并指定Telemetry Host Initiated Log Page的Offset Lower值为512B整数倍,将Create Telemetry Host Initiated Data bit设为1
- 期望结果:
- SSD按照spec要求的格式正确返回Log Page
Case 12: Telemetry Host Initiated Valid Offset Create=0
- 测试方法:
- 检查Identify Controller Data Structure LPA字段的bit3,确定SSD是否支持Telemetry Host Initiated 和Telemetry Controller Initiated log page,如果该Bit为0,本case无效;
- Host发送Get Log Page command,并指定Telemetry Host Initiated Log Page的Offset Lower值为512B整数倍,将Create Telemetry Host Initiated Data bit设为1
- Host发送Get Log Page command,并指定Telemetry Host Initiated Log Page的Offset Lower值为512B整数倍,将Create Telemetry Host Initiated Data bit设为0
- Host发送Get Log Page command,并指定Telemetry Host Initiated Log Page的Offset Lower值为512B整数倍,将Create Telemetry Host Initiated Data bit设为1
- 期望结果:
- SSD收到步骤2,3,4中的Get Log Page command以后,按照spec要求的格式正确返回Log Page
- 步骤3之后收到Log Page内容与步骤2之后收到的相比内容没有变化
Case 13: Telemetry Host Initiated Invalid Offset
- 测试方法:
- 检查Identify Controller Data Structure LPA字段的bit3,确定SSD是否支持Telemetry Host Initiated 和Telemetry Controller Initiated log page,如果该Bit为0,本case无效;
- Host发送Get Log Page command,并指定Telemetry Host Initiated Log Page的Offset Lower值不是512B整数倍;
- 期望结果:
- SSD上报Error – “Invalid Field in Command”
Case 14: Telemetry Controller Initiated Valid Offset
- 测试方法:
- 检查Identify Controller Data Structure LPA字段的bit3,确定SSD是否支持Telemetry Host Initiated 和Telemetry Controller Initiated log page,如果该Bit为0,本case无效;
- Host发送Get Log Page command,并指定Telemetry Controller Initiated Log Page的Offset Lower值为512B整数倍;
- 期望结果:
- SSD按照spec要求的格式正确返回Log Page
Case 15: Telemetry Controller Initiated Invalid Offset
- 测试方法:
- 检查Identify Controller Data Structure LPA字段的bit3,确定SSD是否支持Telemetry Host Initiated 和Telemetry Controller Initiated log page,如果该Bit为0,本case无效;
- Host发送Get Log Page command,并指定Telemetry Controller Initiated Log Page的Offset Lower值不是512B整数倍;
- 期望结果:
- SSD上报Error – “Invalid Field in Command”