1*6eddb6bbSjdolecek.\" $NetBSD: nvmectl.8,v 1.6 2020/09/27 18:17:35 jdolecek Exp $ 2cae3c2f4Snonaka.\" 3cae3c2f4Snonaka.\" Copyright (c) 2012 Intel Corporation 4cae3c2f4Snonaka.\" All rights reserved. 5cae3c2f4Snonaka.\" 6cae3c2f4Snonaka.\" Redistribution and use in source and binary forms, with or without 7cae3c2f4Snonaka.\" modification, are permitted provided that the following conditions 8cae3c2f4Snonaka.\" are met: 9cae3c2f4Snonaka.\" 1. Redistributions of source code must retain the above copyright 10cae3c2f4Snonaka.\" notice, this list of conditions, and the following disclaimer, 11cae3c2f4Snonaka.\" without modification. 12cae3c2f4Snonaka.\" 2. Redistributions in binary form must reproduce at minimum a disclaimer 13cae3c2f4Snonaka.\" substantially similar to the "NO WARRANTY" disclaimer below 14cae3c2f4Snonaka.\" ("Disclaimer") and any redistribution must be conditioned upon 15cae3c2f4Snonaka.\" including a substantially similar Disclaimer requirement for further 16cae3c2f4Snonaka.\" binary redistribution. 17cae3c2f4Snonaka.\" 18cae3c2f4Snonaka.\" NO WARRANTY 19cae3c2f4Snonaka.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20cae3c2f4Snonaka.\" "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21cae3c2f4Snonaka.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 22cae3c2f4Snonaka.\" A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23cae3c2f4Snonaka.\" HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24cae3c2f4Snonaka.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25cae3c2f4Snonaka.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26cae3c2f4Snonaka.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 27cae3c2f4Snonaka.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 28cae3c2f4Snonaka.\" IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29cae3c2f4Snonaka.\" POSSIBILITY OF SUCH DAMAGES. 30cae3c2f4Snonaka.\" 31cae3c2f4Snonaka.\" nvmecontrol man page. 32cae3c2f4Snonaka.\" 33cae3c2f4Snonaka.\" Author: Jim Harris <jimharris@FreeBSD.org> 34cae3c2f4Snonaka.\" 35d003492fSnonaka.\" $FreeBSD: head/sbin/nvmecontrol/nvmecontrol.8 314230 2017-02-25 00:09:16Z imp $ 36cae3c2f4Snonaka.\" 37*6eddb6bbSjdolecek.Dd September 27, 2020 38cae3c2f4Snonaka.Dt NVMECTL 8 39cae3c2f4Snonaka.Os 40cae3c2f4Snonaka.Sh NAME 41cae3c2f4Snonaka.Nm nvmectl 42cae3c2f4Snonaka.Nd NVM Express control utility 43cae3c2f4Snonaka.Sh SYNOPSIS 44cae3c2f4Snonaka.Nm 45cae3c2f4Snonaka.Ic devlist 46cae3c2f4Snonaka.Nm 47cae3c2f4Snonaka.Ic identify 48a6daee9bSwiz.Op Fl x Op Fl v 49a6daee9bSwiz.Ar device_id 50cae3c2f4Snonaka.\".Nm 51cae3c2f4Snonaka.\".Ic perftest 52a6daee9bSwiz.\".Op Fl p 53cae3c2f4Snonaka.\".Aq Fl n Ar num_threads 54cae3c2f4Snonaka.\".Aq Fl o Ar read|write 55cae3c2f4Snonaka.\".Aq Fl s Ar size_in_bytes 56cae3c2f4Snonaka.\".Aq Fl t Ar time_in_sec 57ca639f32Snonaka.\".Aq namespace_id 58cae3c2f4Snonaka.\".Nm 59cae3c2f4Snonaka.\".Ic reset 60ca639f32Snonaka.\".Aq controller_id 61cae3c2f4Snonaka.Nm 62cae3c2f4Snonaka.Ic logpage 63cae3c2f4Snonaka.Op Fl x 64a6daee9bSwiz.Op Fl p Ar page_id 65d003492fSnonaka.Op Fl v Ar vendor-string 66d003492fSnonaka.Op Fl b 67a6daee9bSwiz.Ar device_id Ns | Ns Ar namespace_id 68cae3c2f4Snonaka.\".Nm 69cae3c2f4Snonaka.\".Ic firmware 70a6daee9bSwiz.\".Op Fl a 71cae3c2f4Snonaka.\".Op Fl s Ar slot 72cae3c2f4Snonaka.\".Op Fl f Ar path_to_firmware 73cae3c2f4Snonaka.\".Aq device id 74cae3c2f4Snonaka.Nm 75cae3c2f4Snonaka.Ic power 76cae3c2f4Snonaka.Op Fl l 77*6eddb6bbSjdolecek.Op Fl s 78a6daee9bSwiz.Op Fl p Ar power_state 79a6daee9bSwiz.Op Fl w Ar workload_hint 80a6daee9bSwiz.Ar device_id 81d003492fSnonaka.Nm 82d003492fSnonaka.Ic wdc cap-diag 83d003492fSnonaka.Op Fl o path_template 84ca639f32Snonaka.Ar device_id 85cae3c2f4Snonaka.Sh DESCRIPTION 86cae3c2f4SnonakaNVM Express (NVMe) is a storage protocol standard, for SSDs and other 87cae3c2f4Snonakahigh-speed storage devices over PCI Express. 88*6eddb6bbSjdolecek.Ss power 89*6eddb6bbSjdolecekThe power command controls the supported power states. 90*6eddb6bbSjdolecek.Fl l 91*6eddb6bbSjdolecekwill list supported power states. 92*6eddb6bbSjdolecek.Fl p 93*6eddb6bbSjdolecekwill set the power state to specified value. 94*6eddb6bbSjdolecek.Fl w 95*6eddb6bbSjdolecekwill set workload value. 96*6eddb6bbSjdolecekWith 97*6eddb6bbSjdolecek.Fl s , 98*6eddb6bbSjdolecekthe specified power state and workload value is saved, 99*6eddb6bbSjdolecekso it persists any autonomous transitions and resets. 100*6eddb6bbSjdolecekSupport for saving the values is optional, and depends on the controller. 101d003492fSnonaka.Ss logpage 102d003492fSnonakaThe logpage command knows how to print log pages of various types. 103d003492fSnonakaIt also knows about vendor specific log pages from hgst/wdc and intel. 104d003492fSnonakaPage 0xc1 for hgst/wdc contains the advanced smart information about 105d003492fSnonakathe drive. 106d003492fSnonakaPage 0xc1 is read latency stats for intel. 107d003492fSnonakaPage 0xc2 is write latency stats for intel. 108d003492fSnonakaPage 0xc5 is temperature stats for intel. 109d003492fSnonakaPage 0xca is advanced smart information for intel. 110d003492fSnonaka.Pp 111d003492fSnonakaSpecifying 112d003492fSnonaka.Fl p 113d003492fSnonaka.Ic help 114d003492fSnonakawill list all valid vendors and pages. 115d003492fSnonaka.Fl x 116d003492fSnonakawill print the page as hex. 117d003492fSnonaka.Fl b 118d003492fSnonakawill print the binary data for the page. 119d003492fSnonaka.Ss wdc 12093cd6a62SwizThe various wdc commands retrieve log data from the wdc/hgst drives. 121d003492fSnonakaThe 122d003492fSnonaka.Fl o 123d003492fSnonakaflag specifies a path template to use to output the files. 124d003492fSnonakaEach file takes the path template (which defaults to nothing), appends 125d003492fSnonakathe drive's serial number and the type of dump it is followed 12693cd6a62Swizby 12793cd6a62Swiz.Pa .bin . 128d003492fSnonakaThese logs must be sent to the vendor for analysis. 129d003492fSnonakaThis tool only provides a way to extract them. 130cae3c2f4Snonaka.Sh EXAMPLES 131cae3c2f4Snonaka.Dl nvmectl devlist 132cae3c2f4Snonaka.Pp 133cae3c2f4SnonakaDisplay a list of NVMe controllers and namespaces along with their device nodes. 134cae3c2f4Snonaka.Pp 135cae3c2f4Snonaka.Dl nvmectl identify nvme0 136cae3c2f4Snonaka.Pp 137cae3c2f4SnonakaDisplay a human-readable summary of the nvme0 IDENTIFY_CONTROLLER data. 138cae3c2f4Snonaka.Pp 139cae3c2f4Snonaka.Dl nvmectl identify -x -v nvme0ns1 140cae3c2f4Snonaka.Pp 141a6daee9bSwizDisplay an hexadecimal dump of the nvme0 142a6daee9bSwiz.Dv IDENTIFY_NAMESPACE 143a6daee9bSwizdata for namespace 1. 144cae3c2f4Snonaka.\".Pp 145cae3c2f4Snonaka.\".Dl nvmectl perftest -n 32 -o read -s 512 -t 30 nvme0ns1 146cae3c2f4Snonaka.\".Pp 147d003492fSnonaka.\"Run a performance test on nvme0ns1 using 32 kernel threads for 30 seconds. 148d003492fSnonaka.\"Each thread will issue a single 512 byte read command. 149d003492fSnonaka.\"Results are printed to stdout when 30 seconds expires. 150cae3c2f4Snonaka.\".Pp 151cae3c2f4Snonaka.\".Dl nvmectl reset nvme0 152cae3c2f4Snonaka.\".Pp 153cae3c2f4Snonaka.\"Perform a controller-level reset of the nvme0 controller. 154cae3c2f4Snonaka.Pp 155cae3c2f4Snonaka.Dl nvmectl logpage -p 1 nvme0 156cae3c2f4Snonaka.Pp 157cae3c2f4SnonakaDisplay a human-readable summary of the nvme0 controller's Error Information Log. 158cae3c2f4SnonakaLog pages defined by the NVMe specification include Error Information Log (ID=1), 159cae3c2f4SnonakaSMART/Health Information Log (ID=2), and Firmware Slot Log (ID=3). 160cae3c2f4Snonaka.Pp 161d003492fSnonaka.Dl nvmectl logpage -p 0xc1 -v wdc nvme0 162d003492fSnonaka.Pp 163d003492fSnonakaDisplay a human-readable summary of the nvme0's wdc-specific advanced 164d003492fSnonakaSMART data. 165d003492fSnonaka.Pp 166cae3c2f4Snonaka.Dl nvmectl logpage -p 1 -x nvme0 167cae3c2f4Snonaka.Pp 168cae3c2f4SnonakaDisplay a hexadecimal dump of the nvme0 controller's Error Information Log. 169d003492fSnonaka.Pp 170d003492fSnonaka.Dl nvmectl logpage -p 0xcb -b nvme0 > /tmp/page-cb.bin 171d003492fSnonaka.Pp 172d003492fSnonakaPrint the contents of vendor specific page 0xcb as binary data on 173d003492fSnonakastandard out. 174d003492fSnonakaRedirect it to a temporary file. 175cae3c2f4Snonaka.\".Pp 176cae3c2f4Snonaka.\".Dl nvmectl firmware -s 2 -f /tmp/nvme_firmware nvme0 177cae3c2f4Snonaka.\".Pp 178cae3c2f4Snonaka.\"Download the firmware image contained in "/tmp/nvme_firmware" to slot 2 of the 179cae3c2f4Snonaka.\"nvme0 controller, but do not activate the image. 180cae3c2f4Snonaka.\".Pp 181cae3c2f4Snonaka.\".Dl nvmectl firmware -s 4 -a nvme0 182cae3c2f4Snonaka.\".Pp 183cae3c2f4Snonaka.\"Activate the firmware in slot 4 of the nvme0 controller on the next reset. 184cae3c2f4Snonaka.\".Pp 185cae3c2f4Snonaka.\".Dl nvmectl firmware -s 7 -f /tmp/nvme_firmware -a nvme0 186cae3c2f4Snonaka.\".Pp 187cae3c2f4Snonaka.\"Download the firmware image contained in "/tmp/nvme_firmware" to slot 7 of the 188cae3c2f4Snonaka.\"nvme0 controller and activate it on the next reset. 189cae3c2f4Snonaka.Pp 190cae3c2f4Snonaka.Dl nvmectl power -l nvme0 191cae3c2f4Snonaka.Pp 192cae3c2f4SnonakaList all the current power modes. 193cae3c2f4Snonaka.Pp 194cae3c2f4Snonaka.Dl nvmectl power -p 3 nvme0 195cae3c2f4Snonaka.Pp 196cae3c2f4SnonakaSet the current power mode. 197cae3c2f4Snonaka.Pp 198cae3c2f4Snonaka.Dl nvmectl power nvme0 199cae3c2f4Snonaka.Pp 200cae3c2f4SnonakaGet the current power mode. 201d003492fSnonaka.Sh HISTORY 202d003492fSnonakaThe nvmecontrol utility appeared in 203d003492fSnonaka.Fx 9.2 . 204cae3c2f4Snonaka.Sh AUTHORS 205cae3c2f4Snonaka.An -nosplit 206cae3c2f4Snonakanvmecontrol was developed by Intel and originally written by 207cae3c2f4Snonaka.An Jim Harris Aq Mt jimharris@FreeBSD.org . 208cae3c2f4Snonaka.Pp 209cae3c2f4SnonakaThis man page was written by 210cae3c2f4Snonaka.An Jim Harris Aq Mt jimharris@FreeBSD.org . 211