面壁UNH IOL NVMe一致性测试之4 – Create/Delete IO SQ & CQ Command

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

Group 1 Admin Command Set的第四项是Create & Delete IO Queue测试。

Case1:Basic Operation

  • 测试方法:
    1. Host发送1个Create IO CQ command给SSD
    2. Host发送1个Create IO SQ command给SSD
    3. Host向创建的这些Queue里发送10个Read command
    4. Host发送 1个Delete IO SQ command给SSD (指定Queue ID为之前创建的Queue),删除步骤2创建的SQ
    5. Host发送 1个Delete IO CQ command给SSD(指定Queue ID为之前创建的Queue),删除步骤1创建的SQ
  • 期望结果:
    • SSD完成每一个Create或者Delete IO Queue命令后,正常返回CQ
    • 检查IO Queue被正确Create或者Delete
    • 所有Reserved bit填充0

Case2: Create IO CQ with QID=0h, exceeds Number of Queues reported, Identifier already in Use

  • 测试方法:
    • Host发送Get Feature Command (Feature ID=07h), 获取记录SSD支持的Queue的数量;
  1. Host发送1个Create IO CQ command给SSD,将QID设为0;
  2. Host发送1个Create IO CQ command给SSD,将QID设为大于SSD支最大Queue数量的值;
  3. Host 发送2个Create IO CQ command给SSD,QID设置为相同值。
  • 期望结果:
    • 针对步骤1,2和步骤3的第二个命令,SSD都应该返回错误 – Invalid Queue ID

Case 3: Delete IO CQ before deleting corresponding SQ

  • 测试方法:
    1. Host发送1个Create IO CQ command给SSD
    2. Host发送1个期望结果: Create IO SQ command给SSD
    3. Host向创建的这些Queue里发送10个Read command
    4. Host发送 1个Delete IO CQ command给SSD(指定Queue ID为之前创建的Queue),删除步骤1创建的SQ
    5. Host发送 1个Delete IO SQ command给SSD (指定Queue ID为之前创建的Queue),删除步骤2创建的SQ
    6. Host发送 1个Delete IO CQ command给SSD(指定Queue ID为之前创建的Queue),删除步骤1创建的SQ
  • 期望结果:
    • 针对步骤4的Delete IO CQ command, SSD返回错误 – Invalid Queue Deleting

Case 4: Create IO CQ with Invalid Queue Size

  • 测试方法:
    • Host读取Capabilities寄存器 MQES字段,获取并记录SSD支持的最大Queue Size;
    • Host发送1个Create IO CQ command给SSD,将Queue Size设为0;
    • Host发送1个Create IO CQ command给SSD,将Queue Size设为超过SSD支持的最大值;
  • 期望结果:
    • 针对这两种情况,SSD返回错误 — Invalid Queue Size

Case 5:Create IO SQ with Invalid Queue Size

  • 测试方法:
    • Host读取Capabilities寄存器 MQES字段,获取并记录SSD支持的最大Queue Size;
    • Host发送1个Create IO CQ command给SSD;
    • Host发送1个Create IO SQ command给SSD,将Queue Size设为0;
    • Host发送1个Create IO SQ command给SSD,将Queue Size设为超过SSD支持的最大值;
  • 期望结果:
    • 针对这两种情况,SSD返回错误 — Invalid Queue Size

Case 6: Create IO SQ with Physically Contiguous

  • 测试方法:
    • 读取SSD的Capabilities Register CAP.CQR 字段,如果CQR为0,本case无效;如果为1,继续后面步骤;
    • Host发送1个Create IO CQ command 给SSD;
    • Host发送1个Create IO SQ command给SSD,并将PC bit设为0;
  • 期望结果:
    • SSD返回错误 – Invalid Field in Command

Case 7:Create IO SQ Invalid

  • 测试方法:
    1. Host发送1个Create IO CQ command 给SSD;
    2. Host发送1个Create IO SQ command给SSD,并将CQID设为0h;
    3. Host发送1个Create IO SQ command给SSD,并将CQID设为非0的无效值(与之前Create CQ command定义的ID不同);
  • 期望结果:
    • 针对步骤2,SSD返回错误 – Invalid Queue ID;
    • 针对步骤3,SSD返回错误 – Completion Queue Invalid;

Case 8:Create IO CQ Invalid Interrupt Vector

  • 测试方法:
    • 读取SSD的MC.MME 和 MSIXCAP.MXC.TS字段;
    • Host 发送1个Create IO CQ command, 并将Interrupt Vector值设置为超过SSD支持的最大值;
  • 期望结果:
    • SSD返回错误 – Invalid Interrupt Vector

Case 9: Create Io CQ Invalid Queue Address Offset

  • 测试方法:
    • 读取SSD的MPS寄存器;
    • Host 发送1个Create IO CQ command, 将其第一个PRP List Entry设置成非Qword对齐;
  • 期望结果:
    • SSD返回错误 – Invalid PRP Offset

Case 10: Create Io SQ Invalid Queue Address Offset

  • 测试方法:
    • 读取SSD的MPS寄存器;
    • Host 发送1个Create IO SQ command, 将其第一个PRP List Entry设置成非Qword对齐;
  • 期望结果:
    • SSD返回错误 – Invalid PRP Offset
分类目录 存储, 技术文章.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

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