Skip to content
thokala edited this page May 29, 2012 · 14 revisions

Before forking and cloning nvmecompliance to a local system, the hosting environment should be created. The following Linux environment, or an equivalent one, should be created to host the compliance suite.

A 64 bit Linux distribution:
    * Linux 2.6.35-30-server #56-Ubuntu SMP Mon Jul 11 21:37:42 UTC 2011 x86_64 GNU/Linux
    * 32 bit distributions are not recommended since a compliance suite, to be effective, will need to test 64 bit accesses
Install boost libraries
    * v/1.42
Install doxygen
    * v/1.7.1

Make targets

The Linux make system is utilized with a default target to allow compiling the dnvme. Other targets of interest are as follows:

clean (don't use sudo)
    * removes object files
    * removes intermediate output files
clobber
    * removes doxygen generated documentation
    * removes log files produced by tnvme
    * removes RPM package manager produced files
doc
    * Creates doxygen HTML output files from the source code files
rpm
    * Create RPM package manager files to allow installing tnvme to a target system

Troubleshooting

Anything related to the kernel is declared in headers found in the kernel source tree that you should have set up and configured in /usr/src/. First step is to download the required headers preferably using synaptic package manager and making sure that you have sudo permissions to compile and this should work. Generally you **should not do **'sudo make clean'. If you do this then it will wipe out required files from your src linux-headers and you will get compilation errors which can be resolved if you again download the headers using synaptic package manager.

Note

Makefile uses two flags -DDEBUG and -DQEMU.

  1. DEBUG flag is used to get syslogs useful for debugging.

  2. QEMU flag should be used when the underlying device under test is not an actual hardware but an emulated hardware using QEMU. This flag converts 64 bits reads/writes to register space of the emulated NVME device into two 32 bit reads/writes respectivley, since the version of QEMU against which the driver was developed does not support 64 bit reads/writes. If your underlying device is an actual hardware then this flag should not be used.

Clone this wiki locally