ATA-ATAPI.COM
Technical Support

[Home] [Products]

ATA-ATAPI.COM DOES NOT manufacture, sell or support any hardware products.

ATA-ATAPI.COM DOES NOT provide OS drivers for any hardware products.

ATA-ATAPI.COM DOES NOT provide Technical Support for Lite-On DVD drives.
You must contact Lite-On Tech Support at www.liteonit.com.

Technical Support email address: After checking this page if you still have a question or problem send an email to

SUPPORT EMAIL ADDR

Technical Support

This page contains bug lists and usage suggestions for NVMEQRWT, NVMETEST, AHCCMDT, AHCDEMO, AHCNCQT, ATACT and ATADEMO.

NVME Specification Issues

System physical memory corruption and system crash.

NVME has a very basic and very bad design problem. If the host OS and NVME drive do not interpret the usage of the PRP1 and PRP2 memory addresses the same then there wlll be corruption of system memory and the resulting crash of the system's OS. I see this all the time while testing. I don't think I've ever seen an I/O interface that has such a serious system and data integrity issue.

There are several interpretations of the Get/Set Features number 7.

Depending on how you interpret the description of this feature it either returns the number of Queue ID (QID) supported OR it reports the maximum Queue ID value supported. This has resulted in several different implementations:

Example if Get/Set Features 7 is a number:

  • Create queue 0x1234 // not starting with QID 0x0001
  • Create queue 0x2345 // not incrementing QID by 1
  • etc up to the Get/Set Features 7 max number of queues

Example if Get/Set Features 7 is a value:

  • Create queue 0x0001 // start with QID 0x0001
  • Create queue 0x0002 // incrementing QID by 1
  • etc up to the Get/Set Features 7 max QID value
  • Creating queue value N where N is greater than the Feature 7 value would fail

Note that NVMETEST should support any interpretation of the NVME specification you think is valid.

If an NVME drive does not support Namespace Management.

Is it required to power on with Namespace 0x00000001 defined? Some implementations use the default Namespace 0x00000000 in this case. This interpretation would appear to be incorrect since the NVME specification implies that Namespace 0x00000000 (and 0xFFFFFFFF) is special (see the Identify command for example).

Is a NVME Namespace identified by a number or an token value?

If it is a number then when creating a Namespace must the number be sequential? For example, if Namespace 0x00000001 exists then must the next Namespace be 0x00000002? Or can a Namespace be identified by any 32-bit token value? For example, if Namespace 0x00000001 exists can the next Namespace be 0x01020304?

What does Get Feature 4 do?

It appears that it returns no information in the Completion Queue entry and it returns no data in an I/O buffer. So what does it do?

Firmware Download problem.

If you start a Firmware Download and there is some problem or the download and commit are not completed it may not be possible to start another download because the second may get an invalid offset error. The question is this: Should a Firmware Download with offset of zero start a new download even if a previous download was started but not completed? Or is a reset required before attempting the second download?

Setting values in a controller register such as the CC register.

There are several configuration bits in the CC register that can be set only while CC.EN is 0. The assumption is that you must write these values plus CC.EN set to 0. But then when you set CC.EN to 1 you must repeat all the other values in that write? Assuming this is true then the NVME specification should be more clear about this and simplely say all the CC configuration values must be set when any write to the CC register sets CC.EN to 1.

CMBLOC and CMBSZ registers.

In the CMBLOC register the OFST field is an offset from an undefined location. Is it an offset from the NVME registers (offset from CAP register) or an offset from some other location in physical memory. The NVME specification does not say which.

HMPRE and HMMIN fields of Identify CNS=1 data.

There are NO references to the HMPRE or HMMIN fields any where in the NVME specification. How are these fields related to the Set Feature 0Dh command?

AHCDEMO and NVMETEST Script List (SLIST) Example

This is the example Script List (SLIST). See the SLIST command description in the AHCDEMO or NVMETEST User Guide. This SLIST example simply uses SAY commands to trace the execution sequence of the SLIST.

To install and execute this example follow these steps:

  • In the directory containing the AHCDEMO.EXE or NVMETEST.EXE file, create a sub-directory named SLIST.
  • UnZip the SLDEMO.ZIP file into the SLIST sub-directory.
  • To execute the example, either 1) start AHCDEMO or NVMETEST and enter the command "SLIST SLIST\SLDEMO.SL", or 2) start AHCDEMO or NVMETEST and specify the command line option "SLIST=SLIST\SLDEMO.SL".
  • Review the SLIST execution of the script files in the log file.

CLICK HERE FOR SLIST DEMO (SLDEMO.ZIP)

NVMETEST Engineering Design Verification Test (EDVT) Script List (SLIST)

Watch this space for the release of an NVME EDVT test suite using the SLIST feature of NVMETEST.

AHCDEMO Engineering Design Verification Test (EDVT) Script List (SLIST)

Watch this space for the release of a ATA/SATA EDVT test suite using the SLIST feature of AHCDEMO.

NVMEQRWT Bugs and More

NVMEQRWT Bugs

None known at this time in current version.

Please the NVME issues above.

NVMEQRWT Suggestions

None at this time.

Please the NVME issues above.

NVMETEST Bugs and More

NVMETEST Bugs

None known at this time in current version.

Please the NVME issues above.

NVMETEST Suggestions

See the script files BASIC0.DSF, WRC0.DSF and FWDL.DSF these are good examples of script files.

Please the NVME issues above.

AHCCMDT Bugs and More

AHCCMDT Bugs

None known at this time in current version.

NOTICE: Marvell 88SE6145 AHCI Controller: This model controller (Vendor ID 11AB) identifies itself as AHCI but it really is not AHCI compatible. While it may appear to operate for a few commands, it will normally not work with AHCCMDT. This controller is found on some Intel motherboards as a second AHCI (RAID?) controller.

AHCCMDT Suggestions

SEQ=N vs. SEQ=WRN option and data compare errors: Running AHCCMDT with SEQ=N (the program's default) can make locating the source of data compare problems more difficult to find in the drive's hardware and/or firmware. Use SEQ=WRN to see if the problem that can be found using only a write pass followed by a read pass. If there are no data compare errors, then use SEQ=N.

MINLBA and MAXLBA options: Use these options to test less than the full drive. For example, if you have a drive with 400M sectors (about 200GB) you could use these options to test the first 10GB (about 20M sectors), the middle 10GB or the last 10GB:

  • MAXLBA=20M - test the first 10GB (MINLBA defaults to 0M).
  • MINLBA=190M MAXLBA=200M - test the middle 10GB.
  • MINLBA=380M - test the last 10GB (MAXLBA will default).

AHCDEMO Bugs and More

AHCDEMO Bugs

None known at this time in current version.

NOTICE: Marvell 88SE6145 AHCI Controller: This model controller (Vendor ID 11AB) identifies itself as AHCI but it really is not AHCI compatible. While it may appear to operate for a few commands, it will normally not work with AHCCMDT. This controller is found on some Intel motherboards as a second AHCI (RAID?) controller.

AHCDEMO Suggestions

See the script file WRC4.DSF - this is a very useful Write/Read/Compare script!

AHCNCQT Bugs and More

AHCNCQT Bugs

None known at this time in current version.

NOTICE: Marvell 88SE6145 AHCI Controller: This model controller (Vendor ID 11AB) identifies itself as AHCI but it really is not AHCI compatible. While it may appear to operate for a few commands, it will normally not work with AHCCMDT. This controller is found on some Intel motherboards as a second AHCI (RAID?) controller.

AHCNCQT Suggestions

SEQ=N vs. SEQ=WRN option and data compare errors: Running AHCNCQT with SEQ=N (the program's default) can make locating the source of data compare problems more difficult to find in the drive's hardware and/or firmware. Use SEQ=WRN to see if the problem that can be found using only a write pass followed by a read pass. If there are no data compare errors, then use SEQ=N.

MINLBA and MAXLBA options: Use these options to test less than the full drive. For example, if you have a drive with 400M sectors (about 200GB) you could use these options to test the first 10GB (about 20M sectors), the middle 10GB or the last 10GB:

  • MAXLBA=20M - test the first 10GB (MINLBA defaults to 0M).
  • MINLBA=190M MAXLBA=200M - test the middle 10GB.
  • MINLBA=380M - test the last 10GB (MAXLBA will default).

ATACT Bugs and More

ATACT Bugs

Usage of command line options P0, P1, S0 and S1 - (without the PCI bus numbers b:d:f) will disable the use of read/write DMA commands. This was initially entered as a bug in version 4N but it is not a bug. When the PROMPT option was added, the functionality of these options was changed but the User Guide and history files did not indicate this change. When using version 4N (and future versions) use either the b:d:f:x option, or the PROMPT option, then use of the read/write DMA commands will be possible.

BUG in version 4N: CF devices implementing DMA commands - If a CF device implements READ/WRITE DMA commands, ATACT may generate only READ DMA commands. Version 4N doesn't actually support READ/WRITE DMA on CFA devices. Versions 4P and higher will correctly support these commands (only in TrueIDE mode).

ATACT Suggestions

SEQ=N vs. SEQ=WRN option and data compare errors: Running ATACT with SEQ=N (the program's default) can make locating the source of data compare problems more difficult to find in the drive's hardware and/or firmware. Use SEQ=WRN to see if the problem that can be found using only a write pass followed by a read pass. If there are no data compare errors, then use SEQ=N -- It is possible that more random write/read and other randomly executed commands, such as the power management commands, are required to create the data compare error.

MAXSIZE and MINLBA options: Use these options to test less than the full drive. For example, if you have a drive with 400M sectors (about 200GB) you could use these options to test the first 10GB (about 20M sectors), the middle 10GB or the last 10GB:

  • MAXSIZE=20M - test the first 10GB (MINLBA defaults to 0M).
  • MINLBA=190M MAXSIZE=20M - test the middle 10GB.
  • MINLBA=380M - test the last 10GB (MAXSIZE will default).

The DUMPCHT option - finding data compare errors that happen during the SEQ=R pass: When using SEQ=WRN you are getting a data compare error during the SEQ=R pass that seems to have happened during the SEQ=W pass. Of course the write commands that caused the problem are no longer in the Commmand History Trace (CHT). But every sector that is written contains the command number that wrote the sector. For example, when some sector is read it contains the wrong data (the data for some other LBA) - using the command number in this incorrect sector, rerun the program with the same command line options and add the DUMPCHT=n option, where n is about 30 more than the command number in the sector with the incorrect data. This will cause the Command History Trace (CHT) to be displayed during the SEQ=W pass at the write command about 30 commands following the command that wrote the bad data. Of course DUMPCHT=n can be using at other times, not just to find problems in a SEQ=W pass.

ATADEMO Bugs and More

ATADEMO Bugs

Usage of command line options P0, P1, S0 and S1 in version 11N - (without the PCI bus numbers b:d:f) will disable the use of read/write DMA commands. This was initially entered as a bug in version 11N but it is not a bug. When the PROMPT option was added, the functionality of these options was changed but the User Guide and history files did not indicate this change. When using version 11N (and future versions) use either the b:d:f:x option, or the PROMPT option, then use of the read/write DMA commands will be possible.

ATADEMO Suggestions

None at this time.


Technical Support email address: After checking this page if you still have a question or problem send an email to

SUPPORT EMAIL ADDR


Page updated 25 Apr 2016.