面壁UNH IOL NVMe一致性测试之3 – Get Log Page Command

原创内容,转载请注明:  [http://www.ssdfans.com]  谢谢!

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
  1. Host发送Get Log Page command给SSD,遍历上表中所有该SSD支持的Mandatory的LID,并设置Get Log Page command里的NUMDU(Number of Dwords)和NUMDUL(Number of Dwords Lower)使其大于MDTS;
  2. 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

  • 测试方法:
    1. Host发送Get Log Page command给SSD,将LID设置为01h (Error Information),并记录Error log entry的数量
    2. Host发送Identify Command,将CNS值设为Reserved
    3. 检查SSD返回CQ的Status Field的M位,如果值为1,该case无效 (M位=1代表还有更多的状态信息等待获取)
    4. Host发送Get Log Page command给SSD,将LID设置为01h (Error Information),并记录Error log entry的数量
    5. Host发送Identify Command,将CNS值设为Reserved
    6. 检查SSD返回CQ的Status Field的M位,如果值为1,该case无效 (M位=1代表还有更多的状态信息等待获取)
    7. 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
  1. 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;
  2. 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

  • 测试方法:
    1. 检查Identify Controller Data Structure LPA字段的bit3,确定SSD是否支持Telemetry Host Initiated 和Telemetry Controller Initiated log page,如果该Bit为0,本case无效;
    2. Host发送Get Log Page command,并指定Telemetry Host Initiated Log Page的Offset Lower值为512B整数倍,将Create Telemetry Host Initiated Data bit设为1
    3. Host发送Get Log Page command,并指定Telemetry Host Initiated Log Page的Offset Lower值为512B整数倍,将Create Telemetry Host Initiated Data bit设为0
    4. 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”

 

分类目录 存储, 技术文章.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

想加入这些群,请微信扫描下面二维码,或搜索nanoarchplus,加阿呆为微信好友,介绍你的昵称-单位-职务,注明群名,拉你进群。SSD业界需要什么帮助,也可以找阿呆聊。