diff options
author | Douglas Gilbert <dgilbert@interlog.com> | 2021-04-01 04:53:56 +0000 |
---|---|---|
committer | Douglas Gilbert <dgilbert@interlog.com> | 2021-04-01 04:53:56 +0000 |
commit | 3eca65ae2a191c8a94138c4dea4286a9a9011ff0 (patch) | |
tree | 92d130fd2fdc246bf1a7b37c1f07a2426ce4a186 /inhex/nvme_write_ctl.hex | |
parent | 02bb2aad7c96e908c56e7416290487a6afb80fba (diff) | |
download | sg3_utils-3eca65ae2a191c8a94138c4dea4286a9a9011ff0.tar.gz |
move some hex file from examples to inhex directory; add testing/sg_take_snap; remove no_waitq from testing
git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@893 6180dd3e-e324-4e3e-922d-17de1ae2f315
Diffstat (limited to 'inhex/nvme_write_ctl.hex')
-rw-r--r-- | inhex/nvme_write_ctl.hex | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/inhex/nvme_write_ctl.hex b/inhex/nvme_write_ctl.hex new file mode 100644 index 00000000..02b5a377 --- /dev/null +++ b/inhex/nvme_write_ctl.hex @@ -0,0 +1,38 @@ +# 64 byte NVMe, Write command (a NVM command) that is suitable for: +# sg_raw --cmdfile=<this_file_name> --nvm --request=2048 <nvme_device> +# +# The address field (at byte offset 24, 8 bytes and little endian) gives +# special meaning to the highest address pointers: +# ffffffff fffffffe use address of data-in buffer +# ffffffff fffffffd use address of data-out buffer +# +# The data length field (at byte offset 36, 4 bytes and little endian) +# gives special meaning to the highest block counts: +# fffffffe use byte length of data-in buffer +# fffffffd use byte length of data-out buffer +# +# 512 byte logical block size is assumed. Write 4 blocks hence 2048 bytes. +# The first LBA written is 0x12345 and the namespace is 1. If successful the +# four blocks will be written out of the data-out buffer. Submission queue +# is used (the same queue that Admin commands use). The NVM opcode for the +# Write command is 0x1 and appears in the first command byte. + +01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 fd ff ff ff ff ff ff ff +00 00 00 00 fd ff ff ff 45 23 01 00 00 00 00 00 +03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + +# Notice NVMe uses its quirky "0's based" number of blocks so +# 03 appears at byte offset 48 to mean "write 4 blocks". +# +# A typical invocation in Linux and FreeBSD would look like this: +# sg_raw --cmdfile=nvme_write_ctl.hex --nvm -s 2048 +# --infile=t.bin /dev/nvme0 +# +# Notice the '--nvm' option which is needed to distiguish a NVM +# command from an Admin command as Admin commands are the default +# in this utility. +# +# This utility (and most others in the package) aligns data-in and +# data-out buffers to the beginning of pages which are 4096 bytes +# long at a minimum. This is the way NVMe likes things as well. |