NVMe/tnvme

From Omnia
Jump to navigation Jump to search

NVMe Compliance

nvmecompliance · GitHub - https://github.com/nvmecompliance

  • tnvme - NVMe Compliance Test
  • dnvme - Linux driver for NVMe Compliance Suite
  • manage - NVMe Compliance Suite Management

Setting up tnvme

Here are some general instructions for setting up and executing dnvme/tnvme:

# One-time setup:
Follow instructions in:  https://github.com/nvmecompliance/tnvme/wiki/Compiling
sudo apt-get install gcc make pkg-config libboost-thread-dev libboost-chrono-dev libboost-filesystem-dev libxml++2.6-dev libxml2-dev subversion

# build and install dnvme driver
git clone https://github.com/nvmecompliance/dnvme
cd dnvme
make clean
make
sudo make install
modprobe -r nvme
modprobe dnvme

cd ..

# build tnvme test framework and tests
git clone https://github.com/nvmecompliance/tnvme
cd tnvme
make clean
make

# create log folder
sudo mkdir Logs

# load driver and run a test
modprobe -r nvme
modprobe dnvme
sudo ./tnvme -d /dev/nvme0 -v 1.1
sudo ./tnvme --test=20:0.1.0 -d /dev/nvme0 -v 1.1

List Tests

cd tnvme
./tnvme --summary
0: Group:Informative
    0.0.0: Test:Dump all registers
    1.0.0: Test:Create an ACQ & ASQ
    1.1.0: Test:Issue the identify cmd
    1.2.0: Test:Issue the get features cmd
1: Group:PCI registers syntactic
    0.0.0: Test:Validate all PCI registers syntactically
etc...

Test Details

cd tnvme
./tnvme --detail=0:0.0.0
0: GrpPciRegisters: PCI registers syntactic
    0.0.0: Test: Validate all PCI registers syntactically
      Compliance: revision 1.0b, section 2
         Validates the following; the RO fields which are not implementation
         specific contain default values; The RO fields cannot be written; All
         ASCII fields only contain chars 0x20 to 0x7e.

Run Test

cd tnvme
./tnvme --test=0:1.1.0

Run Test Group

cd tnvme
./tnvme --test=3