4 Replies Latest reply on Mar 3, 2017 11:42 AM by Intel Corporation

    P3700 NVMe Commanding - multiple LBA



      Long story short, I am learning to use the P3700 SSD in my application by developing low-level software to generate NVMe command (PCIe). My first step was to perform basic write and read of the SSD drive - which I've completed.


      My next step is to increase performance, where I'm having an issue.


      For background, here's basically what the software is doing:

      -Disable Controller

      -Configure Controller Registers (queue size, admim submission queue address, ...)

      -Enable Controller

      -NVMe Allocate I/O completion queue command

      -NVMe Allocate I/O submission qeuue  command

      -Format NVMe Namespace command

      -Write NVMe Command (1 LBA)

      -Read NVMe Command (1 LBA)

      -Verify data

      -Repeat write, read, verify....


      Although slow, these is working.


      Now my issue (first issue):

      - I modified the software to perform the NVMe Write Command to multiple LBAs (2 LBA) followed by a READ of those 2 LBA.

      - The read data returned for the 1st LBA (or 4kB) matches the expected data.

      - The read data returned for the 2nd LBA seems to be garbage data (non-zero)


      Any suggestions where to look?


      I've tried multiple debugging steps without progress.


      If an app engineer from Intel could help .... I could provide the full NVMe commands.