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-