2 .\" Copyright (c) 2018-2019 Alexander Motin <mav@FreeBSD.org>
3 .\" Copyright (c) 2012 Intel Corporation
4 .\" All rights reserved.
6 .\" Redistribution and use in source and binary forms, with or without
7 .\" modification, are permitted provided that the following conditions
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\" notice, this list of conditions, and the following disclaimer,
11 .\" without modification.
12 .\" 2. Redistributions in binary form must reproduce at minimum a disclaimer
13 .\" substantially similar to the "NO WARRANTY" disclaimer below
14 .\" ("Disclaimer") and any redistribution must be conditioned upon
15 .\" including a substantially similar Disclaimer requirement for further
16 .\" binary redistribution.
19 .\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 .\" "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 .\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
22 .\" A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 .\" HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
27 .\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
28 .\" IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 .\" POSSIBILITY OF SUCH DAMAGES.
31 .\" nvmecontrol man page.
33 .\" Author: Jim Harris <jimharris@FreeBSD.org>
42 .Nd NVM Express control utility
54 .Aq Fl n Ar num_threads
55 .Aq Fl o Ar read|write
57 .Aq Fl s Ar size_in_bytes
58 .Aq Fl t Ar time_in_sec
67 .Op Fl v Ar vendor-string
126 .Op Fl f Ar path_to_firmware
143 .Op Fl w workload_hint
146 .Op Fl o path_template
150 .Op Fl o path_template
153 .Ic wdc get-crash-dump
154 .Op Fl o path_template
160 .\" .Ic wdc purge-monitor
163 NVM Express (NVMe) is a storage protocol standard, for SSDs and other
164 high-speed storage devices over PCI Express.
167 The logpage command knows how to print log pages of various types.
168 It also knows about vendor specific log pages from hgst/wdc and intel.
169 Note that some vendors use the same log page numbers for different data.
171 .Bl -tag -compact -width "Page 0x00"
179 Changed Namespace List
181 Commands Supported and Effects
183 Reservation Notification
187 Advanced SMART information (WDC/HGST)
189 Read latency stats (Intel)
191 Wite latency stats (Intel)
193 Temperature stats (Intel)
195 Advanced SMART information (Intel)
201 will list all valid vendors and pages.
203 will print the page as hex.
205 will print the binary data for the page.
207 will set Log Specific Field.
209 will set Log Specific Identifier.
211 will set Retain Asynchronous Event.
213 Various namespace management commands.
214 If namespace management is supported by device, allow list, create and delete
215 namespaces, list, attach and detach controllers to namespaces.
217 Format either specified namespace, or all namespaces of specified controller,
218 using specified parameters:
224 Protection Information,
226 Protection Information Location.
227 When formatting specific namespace, existing values are used as defaults.
228 When formatting all namespaces, all parameters should be specified.
229 Some controllers may not support formatting or erasing specific or all
233 enables User Data Erase during format.
236 enables Cryptographic Erase during format.
238 The various wdc command retrieve log data from the wdc/hgst drives.
241 flag specifies a path template to use to output the files.
242 Each file takes the path template (which defaults to nothing), appends
243 the drive's serial number and the type of dump it is followed
245 These logs must be sent to the vendor for analysis.
246 This tool only provides a way to extract them.
248 .Dl nvmecontrol devlist
250 Display a list of NVMe controllers and namespaces along with their device nodes.
252 .Dl nvmecontrol identify nvme0
254 Display a human-readable summary of the nvme0 IDENTIFY_CONTROLLER data.
256 .Dl nvmecontrol identify -x -v nvme0ns1
258 Display an hexadecimal dump of the nvme0 IDENTIFY_NAMESPACE data for namespace
261 .Dl nvmecontrol perftest -n 32 -o read -s 512 -t 30 nvme0ns1
263 Run a performance test on nvme0ns1 using 32 kernel threads for 30 seconds.
264 Each thread will issue a single 512 byte read command.
265 Results are printed to stdout when 30 seconds expires.
267 .Dl nvmecontrol reset nvme0
269 Perform a controller-level reset of the nvme0 controller.
271 .Dl nvmecontrol logpage -p 1 nvme0
273 Display a human-readable summary of the nvme0 controller's Error Information Log.
274 Log pages defined by the NVMe specification include Error Information Log (ID=1),
275 SMART/Health Information Log (ID=2), and Firmware Slot Log (ID=3).
277 .Dl nvmecontrol logpage -p 0xc1 -v wdc nvme0
279 Display a human-readable summary of the nvme0's wdc-specific advanced
282 .Dl nvmecontrol logpage -p 1 -x nvme0
284 Display a hexadecimal dump of the nvme0 controller's Error Information Log.
286 .Dl nvmecontrol logpage -p 0xcb -b nvme0 > /tmp/page-cb.bin
288 Print the contents of vendor specific page 0xcb as binary data on
290 Redirect it to a temporary file.
292 .Dl nvmecontrol firmware -s 2 -f /tmp/nvme_firmware nvme0
294 Download the firmware image contained in "/tmp/nvme_firmware" to slot 2 of the
295 nvme0 controller, but do not activate the image.
297 .Dl nvmecontrol firmware -s 4 -a nvme0
299 Activate the firmware in slot 4 of the nvme0 controller on the next reset.
301 .Dl nvmecontrol firmware -s 7 -f /tmp/nvme_firmware -a nvme0
303 Download the firmware image contained in "/tmp/nvme_firmware" to slot 7 of the
304 nvme0 controller and activate it on the next reset.
306 .Dl nvmecontrol power -l nvme0
308 List all the current power modes.
310 .Dl nvmecontrol power -p 3 nvme0
312 Set the current power mode.
314 .Dl nvmecontrol power nvme0
316 Get the current power mode.
321 .Pa /usr/local/lib/nvmecontrol
322 are scanned for any .so files.
323 These files are loaded.
326 linker set are added to the top-level commands.
329 linker set are added to the logpage parsers.
338 was developed by Intel and originally written by
339 .An Jim Harris Aq Mt jimharris@FreeBSD.org .
341 This man page was written by
342 .An Jim Harris Aq Mt jimharris@FreeBSD.org .