nvme-get-feature(1)
===================

NAME
----
nvme-get-feature - Gets an NVMe feature, returns applicable results

SYNOPSIS
--------
[verse]
'nvme get-feature' <device> [--namespace-id=<nsid> | -n <nsid>]
			[--feature-id=<fid> | -f <fid>]
			[--uuid-index=<uuid-index> | -U <uuid_index>]
			[--data-len=<data-len> | -l <data-len>]
			[--sel=<select> | -s <select>]
			[--raw-binary | -b] [--cdw11=<cdw11> | -c <cdw11>]
			[--human-readable | -H] [--changed | -C]
			[--output-format=<fmt> | -o <fmt>] [--verbose | -v]
			[--timeout=<timeout> | -t <timeout>]

DESCRIPTION
-----------
Submits an NVMe Get Feature admin command and returns the applicable
results. This may be the feature's value, or may also include a feature
structure if the feature requires it (ex: LBA Range Type).

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned feature's structure (if applicable) may be
returned in one of several ways depending on the option flags; the
structure may parsed by the program and printed in a readable format
if it is a known structure, displayed in hex, or the raw buffer may be
printed to stdout for another program to parse.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Retrieve the feature for the given nsid. This is optional and
	most features do not use this value.

-f <fid>::
--feature-id=<fid>::
	The feature id to send with the command. Value provided should
	be in hex.
+
[]
|=================
|Value|Definition
|0x01 \| 'arbitration'| Arbitration
|0x02 \| 'power-mgmt'| Power Management
|0x03 \| 'lba-range'| LBA Range Type
|0x04 \| 'temp-thresh'| Temperature Threshold
|0x05 \| 'err-recovery'| Error Recovery
|0x06 \| 'volatile-wc'| Volatile Write Cache
|0x07 \| 'num-queues'| Number of Queues
|0x08 \| 'irq-coalesce'| Interrupt Coalescing
|0x09 \| 'irq-config'| Interrupt Vector Configuration
|0x0a \| 'write-atomic'| Write Atomicity Normal
|0x0b \| 'async-event'| Asynchronous Event Configuration
|0x0c \| 'auto-pst'| Autonomous Power State Transition
|0x0d \| 'host-mem-buf'| Host Memory Buffer
|0x0e \| 'timestamp'| Timestamp
|0x0f \| 'kato'| Keep Alive Timer
|0x10 \| 'hctm'| Host Controlled Thermal Management
|0x11 \| 'nopsc'| Non-Operational Power State Config
|0x12 \| 'rrl'| Read Recovery Level Config
|0x13 \| 'plm-config'| Predictable Latency Mode Config
|0x14 \| 'plm-window'| Predictable Latency Mode Window
|0x15 \| 'lba-sts-interval'| LBA Status Information Report Interval
|0x16 \| 'host-behavior'| Host Behavior Support
|0x17 \| 'sanitize'| Sanitize Config
|0x18 \| 'endurance-evt-cfg'| Endurance Group Event Configuration
|0x19 \| 'iocs-profile'| I/O Command Set Profile
|0x1a \| 'spinup-control'| Spinup Control
|0x1b \| 'power-loss-signal'| Power Loss Signaling Config
|0x1c \| 'perf-characteristics'|Performance Characteristics
|0x1d \| 'fdp'| Flexible Data Placement
|0x1e \| 'fdp-events'| FDP Events
|0x1f \| 'ns-admin-label'| Namespace Admin Label
|0x20 \| 'key-value'| Key Value Configuration
|0x21 \| 'ctrl-data-queue'| Controller Data Queue
|0x78 \| 'emb-mgmt-ctrl-addr'| Embedded Management Controller Address
|0x79 \| 'host-mgmt-agent-addr'|Host Management Agent Address
|0x7d \| 'enh-ctrl-metadata'| Enhanced Controller Metadata
|0x7e \| 'ctrl-metadata'| Controller Metadata
|0x7f \| 'ns-metadata'| Namespace Metadata
|0x80 \| 'sw-progress'| Software Progress Marker
|0x81 \| 'host-id'| Host Identifier
|0x82 \| 'resv-mask'| Reservation Notification Mask
|0x83 \| 'resv-persist'| Reservation Persistence
|0x84 \| 'write-protect'| Namespace Write Protection Config
|0x85 \| 'bp-write-protect'| Boot Partition Write Protection Config
|=================

-s <select>::
--sel=<select>::
	Select (SEL): This field specifies which value of the attributes
	to return in the provided data:
+
[]
|==================
|Select|Description
|0|Current
|1|Default
|2|Saved
|3|Supported capabilities
|4-7|Reserved
|==================

-U <uuid-index>::
--uuid-index=<uuid-index>::
	UUID Index of the feature

-l <data-len>::
--data-len=<data-len>::
	The data length for the buffer returned for this feature. Most
	known features do not use this value. The exception is LBA
	Range Type

-c <cdw11>::
--cdw11=<cdw11>::
	The value for command dword 11, if applicable.

-b::
--raw-binary::
	Print the raw feature buffer to stdout if the feature returns
	a structure.

-H::
--human-readable::
	This option will parse and format many of the bit fields
	into human-readable formats.

-C::
--changed::
	This option will show feature changed.

-o <fmt>::
--output-format=<fmt>::
	Set the reporting format to 'normal', 'json' or 'binary'. Only one
	output format can be used at a time.

-v::
--verbose::
	Increase the information detail in the output.

-t <timeout>::
--timeout=<timeout>::
	Override default timeout value. In milliseconds.

EXAMPLES
--------
* Retrieves the feature for Number of Queues, or feature id 7:
+
------------
# nvme get-feature /dev/nvme0 -f 7
------------
+

* The following retrieves the feature for the LBA Range Type, which
implicitly requires a buffer and will be printed to the screen in human
readable format:
+
------------
# nvme get-feature /dev/nvme0 -f 3
------------
+

* Retrieves the feature for the some vendor specific feature and
specifically requesting a buffer be allocate for this feature, which
will be displayed to the user in as a hex dump:
+
------------
# nvme get-feature /dev/nvme0 -f 0xc0 -l 512
------------
+
Get feature with UUID index
------------
# nvme get-feature /dev/nvme0 -f 0xc0 -l 512 -U 0x1
------------

* The following retrieves the feature for the LBA Range Type, which
implicitly requires a buffer and will be saved to a file in its raw
format:
+
------------
# nvme get-feature /dev/nvme0 -f 3 --raw-binary > lba_range.raw
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

NVME
----
Part of the nvme-user suite
