xref: /aosp_15_r20/external/sg3_utils/inhex/nvme_identify_ctl.hex (revision 44704f698541f6367e81f991ef8bb54ccbf3fc18)
1# 64 byte NVMe Identify controller command (an Admin command) that is
2# suitable for:
3#       sg_raw --cmdfile=<this_file_name> --request=4096 <nvme_device>
4#
5# The address field (at byte offset 24, 8 bytes and little endian) gives
6# special meaning to the highest address pointers:
7#    ffffffff fffffffe         use address of data-in buffer
8#    ffffffff fffffffd         use address of data-out buffer
9#
10# The data length field (at byte offset 36, 4 bytes and little endian)
11# gives special meaning to the highest block counts:
12#    fffffffe                  use byte length of data-in buffer
13#    fffffffd                  use byte length of data-out buffer
14#
15# Since The Identify command reads data "in" from the device, then the
16# data-in buffer is appropriate.
17
1806 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
1900 00 00 00 00 00 00 00  fe ff ff ff ff ff ff ff
2000 00 00 00 fe ff ff ff  01 00 00 00 00 00 00 00
2100 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
22
23# A typical invocation in Linux and FreeBSD would look like this:
24#    sg_raw --cmdfile=nvme_identify_ctl.hex -r 4k /dev/nvme0
25#
26# NVMe likes "4k" (4096 bytes) buffer size, preferably aligned to
27# a 4096 byte (or "page") boundary.
28