Document the passthru commands.

Reviewed by: bcr@ (earlier version)
Differential Revision: https://reviews.freebsd.org/D24639
This commit is contained in:
Warner Losh 2020-05-01 20:29:51 +00:00
parent a41b48ea12
commit e2d6a6e938
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=360547
2 changed files with 71 additions and 1 deletions

View File

@ -194,6 +194,14 @@
.\" .Nm .\" .Nm
.\" .Ic wdc purge-monitor .\" .Ic wdc purge-monitor
.\" .Aq device-id .\" .Aq device-id
.Nm
.Ic admin-passthru
.Op args
.Aq Ar device-id
.Nm
.Ic io-passthru
.Op args
.Aq Ar namespace-id
.Sh DESCRIPTION .Sh DESCRIPTION
NVM Express (NVMe) is a storage protocol standard, for SSDs and other NVM Express (NVMe) is a storage protocol standard, for SSDs and other
high-speed storage devices over PCI Express. high-speed storage devices over PCI Express.
@ -466,6 +474,68 @@ the drive's serial number and the type of dump it is followed
by .bin. by .bin.
These logs must be sent to the vendor for analysis. These logs must be sent to the vendor for analysis.
This tool only provides a way to extract them. This tool only provides a way to extract them.
.Ss passthru
The
.Dq admin-passthru
and
.Dq io-passthru
commands send NVMe commands to
either the administrative or the data part of the device.
These commands are expected to be compatible with nvme-cli.
Please see
.St The NVMe Standard
for details.
.Bl -tag -width 16n
.It Fl o -opcode Ar opcode
Opcode to send.
.It Fl 2 -cdw2 Ar value
32-bit value for CDW2.
.It Fl 3 -cdw3 Ar value
32-bit value for CDW3.
.It Fl 4 -cdw10 Ar value
32-bit value for CDW10.
.It Fl 5 -cdw11 Ar value
32-bit value for CDW11.
.It Fl 6 -cdw12 Ar value
32-bit value for CDW12.
.It Fl 7 -cdw13 Ar value
32-bit value for CDW13.
.It Fl 8 -cdw14 Ar value
32-bit value for CDW14.
.It Fl 9 -cdw15 Ar value
32-bit value for CDW15.
.It Fl l -data-len
Length of the data for I/O (bytes).
.It Fl m -metadata-len
Length of the metadata segment for command (bytes).
This is ignored and not implemented in
.Xr nvme 4 .
.It Fl f -flags
Nvme command flags.
.It Fl n -namespace-id
Namespace ID for command (Ignored).
.It Fl p -prefill
Value to prefill payload with.
.It Fl b -raw-binary
Output in binary format (otherwise a hex dump is produced).
.It Fl d -dry-run
Do not actually execute the command, but perform sanity checks on it.
.It Fl r -read
Command reads data from the device.
.It Fl s -show-command
Show all the command values on stdout.
.It Fl w -write
Command writes data to the device.
.El
Send arbitrary commands to the device.
Can be used to extract vendor specific logs.
Transfers to/from the device possible, but limited to
.Dv MAXPHYS
bytes.
Commands either read data or write it, but not both.
Commands needing metadata are not supported by the
.Xr nvme 4
drive.
.Sh DEVICE NAMES .Sh DEVICE NAMES
Where Where
.Aq Ar namespace-id .Aq Ar namespace-id

View File

@ -292,7 +292,7 @@ static struct cmd io_pass_cmd = {
.ctx_size = sizeof(struct options), .ctx_size = sizeof(struct options),
.opts = opts, .opts = opts,
.args = args, .args = args,
.descr = "Send a pass through Admin command to the specified device", .descr = "Send a pass through I/O command to the specified device",
}; };
CMD_COMMAND(admin_pass_cmd); CMD_COMMAND(admin_pass_cmd);