NVMETEST

NVME Test Program

Command Summary - Quick Reference

Version 2A4d

Copyright 2015-2020 Hale Landis. All rights reserved.

Note: Also see files NVMETEST.HTM and SCRIPTS.HTM.

TABLE OF CONTENTS

(Go To TOC)

Command Line Options


   NVMETEST [options]

   HELP           - Display command line help and exit to DOS if
                    this option is found anywhere on the DOS
                    command line.

   b:d:f          - b:d:f is the PCI bus, device and
                    function for the NVME controller,
                    needed only if there is more than
                    one NVME controller in the system.

   AV=n           - size of array memory,
                    1=20Mbytes, 2=40Mbytes, 3=60Mbytes, 4=80Mbytes.
   BAR0=n         - This option is ignored starting in version 2A3.
   LOG=fileName   - Log file name.
   MPS=n          - Memory Page Size - n=4 for 4096 bytes (default),
                    n=8 for 8192 bytes.
   Nn=n           - Set numeric variable OPT_Nn to a value.
   READOnly       - Set read only mode.
   SCR=fileName   - Script file to run.
   SLIST=fileName - Script list to run.
   Sn=string      - Set string variable STR_Sn to a value.

(Go To TOC)

DOS Environment Variables

Change screen size and colors


   SET NVMETEST=[size];[colors]

Change the screen size and the screen colors. See the NVMETEST User Guide.

(Go To TOC)

Commands

If the Command Type column is blank, the command is available in all versions of the program and can be entered from the keyboard or used in a script file. Values in the Command Type column indicate the following:


   A - An Admin I/O command (uses buffers 0 and 1)
   D - A device I/O command (uses buffers 0 and 1)
   F - Command is available only in the full version.
   Q - A queued command (uses buffers 2 to 127)
   R - Command can be used with the REPeat command.
   S - Command is valid only in a script file.


Command Command
Type    Syntax
------- ---------------------------------------------------------

        // abort a command
A       ABORT qid cid

        // create asynchronous event request
A       AER

        // auto commands after I/O error
        AFTERERror
        AFTERERror NONE
        AFTERERror OFf
        AFTERERror ON
        AFTERERror (n)
        AFTERERror [+]command [-]command ...

           command: SHOWPC, Dump, SHOWCH and Clear.

        // auto commands after I/O with no error
        AFTERNOerror
        AFTERNOerror NONE
        AFTERNOerror OFf
        AFTERNOerror ON
        AFTERNOerror (n)
        AFTERNOerror [+]command [-]command ...

           command:  SHOWPC, COMPx, Dump, SHOWCH and Clear.

        // ask for user input
F       ASK varName [text]
F       ASKSTR strVarName [text]
F       ASKYN varName [text]

        // invoke ONERRor if result zero (false)
F       ASSERT testValue [acCode]   // see ac_code

        // array variables
F       AVCLEAR arrayName                 // clear array to zeroes except in I/O buffer
F       AVDELETE                          // delete all arrays
F       AVFETCH varName arrayName index   // fetch an array value
F       AVNEW   arrayName type size [BUFfer]   // create a new array
           unsigned types: USBYTE, USWORD, USDWORD, USQWORD.
           signed types: BYTE, WORD, DWORD, QWORD.
F       AVSTORE arrayName index n         // store an array value

        // auto commands before an I/O command
        BEFORE
        BEFORE NONE
        BEFORE OFf
        BEFORE ON
        BEFORE (n)
        BEFORE [+]command [-]command ...

           command: Dump, SHOWCH, Clear and FILLx.

        // begin a subroutine
FS      BEGINSub subName [type]

        // set sector/block size
        BLKSize [ sectSize [mdSize] ]
        BLOCKSize [ sectSize [mdSize] ]

        // break out of a while loop
FS      BReak

        // display or change buffer numbers
        BUFNum [bufNum]

        // display or change DPTR (PRP1 or SGL) offset and MPTR offset
        BUFOff [dbpOff mdpOff]

        // use PRP or SGL I/O buffer addressing
        BUFPtr
        BUFPtr PRP
        BUFPtr SGLn   // n is 1, 2, 3 or 4
        BUFPtr (n)    // n is 0 (PRP) or 1 to 4 (SGLn)

        // call a subroutine
FS      CAll subName [ n1 n2 n3 n4 n5 n6 n7 n8 n9 ]
F       subName [ n1 n2 n3 n4 n5 n6 n7 n8 n9 ]

        // create completion queue (queue 1 to 7)
A       CCQ qid

        // clear trace buffers
        CLear

        // display or set optional command parameter dword values
F       CMDParam
F       CMDParam dwOff n
F
F           dwOff = DW2, DW3 and DW10 to DW15
F
F       CMDParam name value [name value] ...
F
F           name: LR, FUA, PRACT, PRCHK, DSM, LBRT, LBATM, LBAT
F
F       CMDParam ZERO

        // setup, measure and report command timing
F       CMDTime
F       CMDTime CONFIG
F       CMDTime OFf
F       CMDTime ON
F       CMDTime (n)

        // execute a Compare command
DR      CMPR qid sc lba

        // compare bytes in I/O buffer
        COMPare numBytes frSectorOffset frByteOffset toSectorOffset toByteOffset

        // compare bytes in buffers
        COMPBUffer numBytes bufNum1 bufNum2

        // perform data compare on I/O buffer data
        COMPIncr [numSect]
        COMPOne [numSect]
        COMPPat [numSect]
        COMPRand [numSect]
        COMPStart [numSect]
        COMPTag [numSect]
        COMPUw [ numSect [piHi piLo [expByte] ] ]
        COMPWord [numSect]
        COMPZero [numSect]

        // return to top of WHILE loop
FS      COntinue

        // copy buffer to buffer
        COPYBUffer numBytes frBufNum toBufNum

        // copy bytes within an I/O buffer
        COPY numBytes frSectorOffset frByteOffset toSectorOffset toByteOffset

        // copy and re-order bytes in a variable
F       COPYBYtes n1 n2 n3 n4 frVarName toVarName

        // copy controller registers to buffer 0
        COPYREgs

        // create submission and completion queues
A       CQUEses firstQid [ lastQid [incr] ]

        // compute CRC16 on buffer 0 and 1 data
        CRC16 numBytes [ numBytes2 ]   // see crc_16

        // create submission queue (queue 1 to 7)
A       CSQ qid [cqid]

        // delete completion queue
A       DCQ qid

        // decrement value in a variable
F       DECR varName [n]

        // delay seconds, milliseconds or microseconds
        DELAY
        DELAY n
        DELAY MS n
        DELAY US n

        // DOS COPy, DELete, DIR and RENanme
F       DOS COPy frFileName toFileName
F       DOS DELete fileName
F       DOS DIR [fileSpec]
F       DOS REName fileName newFileName

        // delete submission queue
A       DSQ qid

        // set driver time out in seconds
        DTO [n]

        // display Dump command help
        Dump

        // set decimal or hex dump/show display
        Dump DEC
        Dump HEX

        // dump data from an I/O buffer
        Dump BUFfer byteOffset numBytes
        Dump sectorOffset [ byteOffset [ numBytes ] ]
        Dump Next

        // various data display commands
F       DUMPAV arrayName index number     // arrays
        DUMPCMb offset numBytes [fmt]     // dump CMB area
        DUMPCQ qid en      // en=64 to dump entire queue
        DUMPCT             // dump sector tag data
        DUMPDAta offset numBytes [fmt]    // dump data area
        DUMPMEta sectorOffset [numSect]   // dump meta data
        DUMPREgs offset numBytes [fmt]    // dump nvme regs area
        DUMPSQ qid en      // en=64 to dump entire queue
        DUMPTAg            // dump sector tags (exp/act)
F       DUMPVAr            // all variables
F       DUMPVAr *AV        // all array
F       DUMPVAr *BI        // all built-in
F       DUMPVAr *UD        // all user defined
F       DUMPVAr varName    // matching user or built-in

        // script command echo on/off
        ECHO
        ECHO OFf
        ECHO ON
        ECHO (n)

        // edit file, keyboard buffer or script file
F       EDITKB [fileName]
F       EDITsf [fileName]

        // evaluate expression
        EE n

        // IF ... ELSE ... ENDIF
FS      ELSE

        // IF ... ELSE ... ENDIF
FS      ENDIF

        // end of subroutine
FS      ENDSub [subName]

        // end of while loop
FS      ENDWHile

        // exit NVMETEST (return to DOS)
        EXit [n]

        // expect next I/O command to get an error
        EXPEcterror [status]

        // fetch data from the I/O buffer into a variable
F       FETCHBUF varName [ BUFfer | sectorOffset ] byteOffset size
F       FETCHBUF varName [ BUFfer | sectorOffset ] byteOffset size BE
F       FETCHBUF varName [ BUFfer | sectorOffset ] byteOffset size LE

F       FETCHCQ varName qid eNun dwNum
F       FETCHSQ varName qid eNun dwNum

        // fill buffer with data pattern
        FILLIncr [sbv]
        FILLNUM n
        FILLOne
        FILLPat
        FILLPat n ...
        FILLPat + n ...
        FILLRand
        FILLStart
        FILLTag
        FILLUW dataByte metaByte piHi piLo
        FILLWord [swv]
        FILLZero

        // flush
D       FLUSH qid

        // format NVM
A       FORMAT fmtParam

        // next two commands are fused
F       FUSED

        // get feature
A       GF dw10 [ dw11 [dw1] ]

        // get log page
A       GLP logPage numBytes [NOSHOW]

        // various help commands
        HElp      // help command help
        HElp *    // command summary
        HElp x    // x is 'a' to 'z'
        HELPKB
        HELPKB ON
        HELPKB Off
        HELPKB (n)

        // execute a NVME Identify command
A       ID dw10 [NOSHOW] [NOSET] [NSID n]  // dw10 is CNTID and CNS

        // IF ... ELSE ... ENDIF
FS      IF n

        // increment value in a variable
F       INCR varName [n]

        // read from PCI config space
F       INPCIByte offset [varName]
F       INPCIWord offset [varName]

        // read from an x86 I/O port
F       INPORTByte  ioAddr [varName]
F       INPORTWord  ioAddr [varName]
F       INPORTDword ioAddr [varName]

        // setup LBA updating for REPeat'ed commadns
F       LBAIncr
F       LBAIncr Random [maxLba]
F       LBAIncr TL [maxLba]
F       LBAIncr -TL [maxLba]
F       LBAIncr n [maxLba]
F       LBAIncr -n [maxLba]

        // set LBA for COMPx/FILLx commands
        LBASet lba

        // define local variable in a subroutine
F       LOCAL varName [=] n

        // log commands
        LOG
        LOG DELete
        LOG KML normal repeat
        LOG MAXimum
        LOG MINimum
        LOG NEW fileName
        LOG OFf
        LOG ON
        LOG SML normal repeat
        LOG SMLRestore n
        LOG (n)

        // metadata parameters
        METAdata
        METAdata NONE
        METAdata PIAT n    // see meta_piat
        METAdata PICHK n   // see meta_chk
        METAdata SET n     // see meta_type
        METAdata [ DPTR | MPTR ] [ PI | MD | PIMD | MDPI ]

        // namespace attach
A       NSATTACH nsid ctrl1 [ ctrl2 ... }

        // create a namespace
A       NSCREATE nsze ncap flbas dps nmic

        // delete a namespace
A       NSDELETE nsid

        // namespace detach
A       NSDETACH nsid ctrl1 [ ctrl2 ... }

        // set namespace id
        NSID [nsid]

        // auto on error options
F       ONERRor
FS      ONERRor CAll subName [n]
F       ONERRor COntinue
F       ONERRor EXit
F       ONERRor NExt
F       ONERRor QUit

        // auto on ESC key options
F       ONESCkey
FS      ONESCkey CAll subName [n]
F       ONESCkey COntinue
F       ONESCkey EXit
F       ONESCkey NExt
F       ONESCkey QUit

        // change value of a OPT_Nn variable
F       OPTNUMset OPT_Nn n

        // write to PCI config space
F       OUTPCIByte offset n
F       OUTPCIWord offset n

        // write to an x86 I/O port
F       OUTPORTByte  ioAddr n
F       OUTPORTWord  ioAddr n
F       OUTPORTDword ioAddr n

        // pop ONERRor,ONESCkey, AFTERx, BEFORE,
        //      COMPx, FILLx and TAG settings.
FS      POP

        // push ONERRor,ONESCkey, AFTERx, BEFORE,
        //      COMPx, FILLx and TAG settings.
FS      PUSH

        // add an LBA range to the queued command list
        QCADD R minSc maxSc minLba maxLba
        QCADD W minSc maxSc minLba maxLba

        // clear the queued command list
        QCLEAR

        // execute queued command list for repCnt loops
DQ      QCGO repCnt Random [DC]
DQ      QCGO repCnt TL [DC]
DQ      QCGO repCnt n [DC]
DQ      QCGO repCnt -TL [DC]
DQ      QCGO repCnt -n [DC]

       // execute queued command list for number of seconds
DQ      QCGOT numSec Random [DC]
DQ      QCGOT numSec TL [DC]
DQ      QCGOT numSec n [DC]
DQ      QCGOT numSec -TL [DC]
DQ      QCGOT numSec -n [DC]

        // set/display maximum number of queued commands per queue
        QCMAX [n]

        // display queue command status
        QCMDS

        // queue commands on any queue
        // See QCMDS in User Guide before using.
        QCMDS BEGin qid
        // insert commands and buffer setup commands here
DFQ     QCMDS EXEcute
        // check results of buffer data for read commands here

        // quit script, quit SLIST and/or exit NVMETEST.
        QUit [SLIST]

        // execute a read command (see LBAIncr command)
DR      R qid sc lba

        // set random seed (see rand_num)
        RANDSEED n

        // read data from a file into the I/O buffer
F       READFile numBytes fileName [ offset [Check] ]

        // read only on/off
        READOnly
        READOnly OFf
        READOnly ON
        READOnly (n)

        // repeat commands (see LBAIncr, R and W, etc)
F       REPeat count command

        // reset NVME controller
A       RESET           // EN=0/EN=1
A       RESET DISABLE   // EN=0
A       RESET NSSR      // NSSR if supported

        // return from a subroutine
FS      RETurn [n]

        // display or change the Run ID value
        // see start_time and run_id
        RUNID [n]

        // execute sequence of write/read commands
DR      RWX qid sequence minSC maxSC lba

        // write text to screen and log
F       SAY text

        // display large FAIL or PASS message
F       SAYFail
F       SAYPass

        // load, compile and execute a script file
F       SCRipt fileName [n]

        // define and/or assign a value to a variable
F       SET varName [=] n
F       varName = n

        // execute 'ID 1', 'ID 0' and 'CQUEues' commands.
A       SETUP firstQid [ lastQid [incr] ]

        // set features
A       SF dw10 dw11 dw12 dw13 dw14 dw15 [dw1]

        // insert a SGL Bit Bucket into the next command's data transfer
        SGLBB n      // n is transfer length of the Bit Bucket

        // display SHOW command help
        SHOW

        // change data format (dec/hex)
        SHOW DEC
        SHOW HEX

        // various data display commands
        SHOWAEr           // asyncronous event requests
        SHOWCH            // command history
        SHOWCMb           // display CMB usage
        SHOWCQ qid        // display summary of entire queue
        SHOWCQ qid en     // en is 0 to 63 to display single entry,
                          // or en is 64 to display entire queue
        SHOWDAta [ALLBUF] // display memory allocations
        SHOWPC            // previous command
        SHOWQC            // queued commands list
        SHOWQUeues        // submission/completion queues defined
        SHOWREgs          // display regs, doorbells, etc
        SHOWSQ qid        // display summary of entire queue
        SHOWSQ qid en     // en is 0 to 63 to display single entry,
                          // or en is 64 to display entire queue
F       SHOWSUb           // subroutines

        // set NVME CC.SHN value
A       SHUTDOWN n      // n is 0 to 3

        // execute a SLIST (See User Guide)
F       SLIST fileName

        // set SLIST looping options
F       SLOPTION [LOOP n] [TIME n]

        // script debugging (see User Guide)
F       SSS [option]

        // store bytes into the I/O  buffer
        STORE [ BUFfer | sectorOffset ] byteOffset n ...

        // store a variable's value into the I/O buffer
F       STOREBUF [ BUFfer | sectorOffset ] byteOffset size value
F       STOREBUF [ BUFfer | sectorOffset ] byteOffset size value BE
F       STOREBUF [ BUFfer | sectorOffset ] byteOffset size value LE

        // string commands
F       STRAVC    fromAvNdx toAvNdx
F       STRAVF    strVar avNdx
F       STRAVS    avNdx strVar
F       STRCMP    strVar1 strVar2
F       STRCONV   varName strVar
F       STRFBUF   strVar [ BUFfer | sectorOffset ] byteOffset
F       STRFIND   strVar1 strVar2
F       STRLEN    strVar
F       STRLWR    strVar
F       STRPARSE  strVar1 strVar2 strVar3
F       STRSBUF   [ BUFfer | sectorOffset ] byteOffset strVar
F       STRSET    strVar [text]
F       STRSTATUS n
F       STRSUB    strVar1 strVar2 offset length
F       STRUPR    strVar

        // sector tag data on/off (see COMPx and FILLx)
        TAG
        TAG FULL     // full sector tagging
        TAG ON       // same as FULL
        TAG NONE     // no sector tagging
        TAG OFf      // same as NONE
        TAG PARTIAL  // partial sector tagging
        TAG (n)      // 0=NONE/OFf, 1=FULL/ON, 2=PARTIAL

        // cleanup user defined (global) variables
F       UDVAR SAVE
F       UDVAR CLEANUP
F       UDVAR DELETEALL

        // relocate queues and PRP/SGL lists to CMB
F       USECMB                                       // show CMB status
F       USECMB NONE                                  // disable CMB
F       USECMB (n)                                   // see cmb_flag
F       USECMB ALL [TEST]                            // enable CMB
F       USECMB [SQ] [CQ] [PRP] [SGL] [BUFfer] [TEST] // enable CMB

        // execute a VU command
ADF      VUCMDExec qid dataXferSize // qid  = 0, cmd 00H to BFH
ADF      VUCMDExec qid              // qid  = 0, cmd C0H to FFH
ADF      VUCMDExec qid dataXferSize // qid != 0, cmd 00H to 7FH
ADF      VUCMDExec qid              // qid != 0, cmd 80H to FFH

        // display or set VU command parameter dword values
F       VUCMDParam
F       VUCMDParam dwOff  n
F           dwOff: DW0 to DW3 and DW10 to DW15
F       VUCMDParam ZERO

        // execute a write command (see LBAIncr command)
DR      W qid sc lba

        // begin a while loop
FS      WHILE n

        // window (menu) commands
FS      WINdow ASK varName
FS      WINdow CLEAR
FS      WINdow CLOSE
FS      WINdow COLOR fb
FS      WINdow GOTO n
FS      WINdow OPEN

        // write text to the log file
F       WLog text

        // write data from the I/O buffer to a file
F       WRITEFile numBytes fileName [Append]

        // write text to a file
F       WRITEText fileName text

DFR     WUNC qid sc lba

DFR     WZERO qid sc lba

        // repeat previous keyboard command
        =
        ==

        // repeat previous keyboard I/O command
        /
        //

(Go To TOC)

Directives

f // include a script file (see User Guide) #INCLUDE fileName

// append a script file (see User Guide) F #NEXT fileName

(Go To TOC)

Built-In Variables


   ac_code     - acCode for the most recent ASSERT that failed
   bios_timer  - system BIOS timer value
   buf_blks    - I/O buffer size in sectors
   buf_ptr     - current BUFPTR setting (0=PRP, 1-4=SGLn)
   buf_size    - I/O buffer size in bytes
   chk_sum     - check sum - see CHKSUM command
   cmb_flag    - types of data in CMB: 0x00=none,
                    0x01=SQ, 0x02=CQ, 0x04=PRP, 0x08=SGL, 0x10=BUF
   cmb_numbuf  - number of buffers in CMB
   cmdt_avg    - see CMDT command
   cmdt_cnt    - see CMDT command
   cmdt_cur    - see CMDT command
   cmdt_hi     - see CMDT command
   cmdt_lo     - see CMDT command
   cmdt_timer  - see CMDT command
   cmdt_tot    - see CMDT command
      NOTE: For cq_* variables also see the FETCHSQCQ command.
   cq_cid      - compleion command ID for most recent command
   cq_dw0      - completion status dw0 for most recent command
   cq_dw1      - completion status dw1 for most recent command
   cq_dw2      - completion status dw2 for most recent command
   cq_dw3      - completion status dw3 for most recent command
   cq_en       - completion queue enty number for most recent command
   cq_qid      - completion queue ID for most recent command
   cq_status   - I/O status for most recent command or
                 0xffff=time out, 0xeeee=fused error, 0xdddd=no error no data
   crc_16      - CRC 16 - see CRC16 command
   cur_time    - (string) current date/time
   dbp_offset  - current DPTR (PRP1 or SGL) offset
   demo_versi  - program version (numeric)
   dev_bs      - device sector (block) size
   dev_dto     - current driver time out
   dev_tag     - not zero if TAG ON
   exp_err     - 0 if EXPEcterror is off, 1 if on
   fill_num    - see FILLNUM command
   id_model    - (string) device model
   id_serial   - (string) device serial
   id_version  - (string) device version
   io_errcode  - same as io_result
   io_errmsg   - (string) driver error message for last NVME command
   io_lba      - LBA used with last NVME R/W command
   io_result   - 0 = no error, 1 = I/O error, 2 = time out error,
                 4 = data compare error
   io_sc       - sector count used with last NVME R/W command
   io_tl       - sector count used with last NVME R/W command
   log_sml     - encoded current 'LOG SML x x' setting
   log_name    - (string) current log file name
   log_status  - not zero if log disk is full
   max_lba     - maximum LBA (num_lba-1) - see below
   mdp_offset  - current MPTR offset
   meta_piat   - current PI Application Tag value.
   meta_chk    - current METAdata PICHK bits,
                 default 0x07, 0x00=do not check any PI fields,
                 0x01=check CRC, 0x02=check AppTag, 0x04=check RefTag
   meta_size   - number of metadata bytes in current format
   meta_type   - current metadata settings, 0x00=NONE,
                 0x11=DPTR PI, 0x14=DPTR MD, 0x12=DPTR PIMD, 0x18=DPTR MDPI
                 0x21=MPTR PI, 0x24=MPTR MD, 0x22=MPTR PIMD, 0x28=MPTR MDPI
   ns_fmtnum   - current namespace format number (0-15)
   ns_id       - current namespace id
   num_bytes   - number of bytes processed by various commands
   num_lba     - total number of LBAs (max_lba+1) - see above
   opt_n0      - command line option N0=n (same as scr_param)
   opt_n1      - command line option N1=n
   opt_n2      - command line option N2=n
   opt_n3      - command line option N3=n
   opt_n4      - command line option N4=n
   opt_n5      - command line option N5=n
   opt_n6      - command line option N6=n
   opt_n7      - command line option N7=n
   opt_n8      - command line option N8=n
   opt_n9      - command line option N9=n
   pci_bus     - host controller PCI bus number
   pci_dev     - host controller PCI device number
   pci_fun     - host controller PCI function number
   pgm_versio  - (string) program version
   qc_iops     - IOPS for QCGO/QCGOT
   qc_numio    - number of commands executed by QCGO/QCGOT
   qc_numsec   - execution time in seconds for QCGO/QCGOT
   que_bn      - even number buffer used by QCMDS added command
   rand_num    - 64-bit random number
   read_only   - no zero if write commands not allowed
   reg_cap     - NVME CAP register
   reg_vs      - NVME VS register
   reg_cc      - NVME CC register
   reg_csts    - NVME CSTS register
   reg_aqa     - NVME AQA register
   reg_cmbloc  - NVME CMBLOC register
   reg_cmbsz   - NVME CMBSZ register
   rep_num     - current repeat number
   rep_prev    - ending repeat of the most recent REPeat command
   run_id      - current run id (a 4 byte value), see start_time
   run_time    - NVMETEST run time in seconds
   scr_flag    - see SCRipt command
   scr_ln      - current script line number
   scr_name    - (string) same as script_nam
   scr_param   - see SCRipt command (same as opt_n0)
   scr_run     - not zero if script running
   script_fla  - see SCRipt command
   script_ln   - current script line number
   script_nam  - (string) current script file name
   script_par  - see SCRipt command (same as opt_n0)
   script_run  - not zero if script running
   sgl_sup     - value of Identify CNS=1 SGLS field
   sgl_bb      - SGL bit bucket length for next command
   slist_loop  - current slist loop count
   slist_run   - not zero if slist running
   slist_sfn   - (string) current slist script file name
   slist_time  - current slist run time (mintues)
   slopt_loop  - slist option loop count
   slopt_time  - slist option run time
      NOTE: For sq_* variables also see the FETCHSQCQ command.
   sq_bn       - buffer number (DPTR buffer)
   sq_cid      - submission command ID for most recent command
   sq_dw0      - submission dw0 for most recent command
   sq_dw1      - submission dw1 for most recent command
   sq_dw2      - submission dw2 for most recent command
   sq_dw3      - submission dw3 for most recent command
   sq_dw4      - submission dw4 for most recent command
   sq_dw5      - submission dw5 for most recent command
   sq_dw6      - submission dw6 for most recent command
   sq_dw7      - submission dw7 for most recent command
   sq_dw8      - submission dw8 for most recent command
   sq_dw9      - submission dw9 for most recent command
   sq_dw10     - submission dw10 for most recent command
   sq_dw11     - submission dw11 for most recent command
   sq_dw12     - submission dw12 for most recent command
   sq_dw13     - submission dw13 for most recent command
   sq_dw14     - submission dw14 for most recent command
   sq_dw15     - submission dw15 for most recent command
   sq_en       - submission queue enty number for most recent command
   sq_qid      - submission queue ID for most recent command
   start_time  - NVMETEST start time (a 4 byte value), see run_id
   str_result  - result of last str* command
   str_status  - (string) NVME command status message (see STRSTATUS command)
   str_s0      - (string) string 0
   str_s1      - (string) string 1
   str_s2      - (string) string 2
   str_s3      - (string) string 3
   str_s4      - (string) string 4
   str_s5      - (string) string 5
   str_s6      - (string) string 6
   str_s7      - (string) string 7
   str_s8      - (string) string 8
   str_s9      - (string) string 9
   sub_param   - same as sub_param1
   sub_param1  - subroutine parameter 1
   sub_param2  - subroutine parameter 2
   sub_param3  - subroutine parameter 3
   sub_param4  - subroutine parameter 4
   sub_param5  - subroutine parameter 5
   sub_param6  - subroutine parameter 6
   sub_param7  - subroutine parameter 7
   sub_param8  - subroutine parameter 8
   sub_param9  - subroutine parameter 9
   sub_return  - subroutine return value

-end-