Copyright 2015-2020 Hale Landis. All rights reserved.
Note: Also see files NVMETEST.HTM and SCRIPTS.HTM.
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.
Change screen size and colors
SET NVMETEST=[size];[colors]
Change the screen size and the screen colors. See the NVMETEST User Guide.
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
/
//
f // include a script file (see User Guide) #INCLUDE fileName
// append a script file (see User Guide) F #NEXT fileName
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-