1bbf21555SRichard Lowe.\" 2bbf21555SRichard Lowe.\" This file and its contents are supplied under the terms of the 3bbf21555SRichard Lowe.\" Common Development and Distribution License ("CDDL"), version 1.0. 4bbf21555SRichard Lowe.\" You may only use this file in accordance with the terms of version 5bbf21555SRichard Lowe.\" 1.0 of the CDDL. 6bbf21555SRichard Lowe.\" 7bbf21555SRichard Lowe.\" A full copy of the text of the CDDL should have accompanied this 8bbf21555SRichard Lowe.\" source. A copy of the CDDL is also available via the Internet at 9bbf21555SRichard Lowe.\" http://www.illumos.org/license/CDDL. 10bbf21555SRichard Lowe.\" 11bbf21555SRichard Lowe.\" 12bbf21555SRichard Lowe.\" Copyright (c) 2018, Joyent, Inc. 133281964bSHans Rosenfeld.\" Copyright 2022 Tintri by DDN, Inc. All rights reserved. 14bbf21555SRichard Lowe.\" 15*f7ce6a74SRobert Mustacchi.Dd August 27, 2023 16bbf21555SRichard Lowe.Dt NVME 4D 17bbf21555SRichard Lowe.Os 18bbf21555SRichard Lowe.Sh NAME 19bbf21555SRichard Lowe.Nm nvme 20bbf21555SRichard Lowe.Nd Intel NVMe compliant storage driver 21bbf21555SRichard Lowe.Sh DESCRIPTION 22bbf21555SRichard LoweThe 23bbf21555SRichard Lowe.Nm 24bbf21555SRichard Lowedriver uses the 25bbf21555SRichard Lowe.Xr blkdev 4D 26bbf21555SRichard Loweframework to provide access to 27bbf21555SRichard LoweNVMe compliant solid-state storage devices. 28*f7ce6a74SRobert MustacchiAll NVMe version 1.x and 2.X devices are supported. 29bbf21555SRichard Lowe.Lp 30bbf21555SRichard LoweNVMe devices supporting multiple namespaces will present each 31bbf21555SRichard Lowenamespace as its own 32bbf21555SRichard Lowe.Xr blkdev 4D 33bbf21555SRichard Loweinstance in the system. 34bbf21555SRichard Lowe. 35bbf21555SRichard Lowe.Sh CONFIGURATION 36bbf21555SRichard LoweThe 37bbf21555SRichard Lowe.Nm 38bbf21555SRichard Lowedriver can be configured by defining properties in the 39bbf21555SRichard Lowe.Pa nvme.conf 40bbf21555SRichard Lowefile. 41bbf21555SRichard LoweThe parameters are considered an unstable interface, subject to 42bbf21555SRichard Lowechange without notice. 43bbf21555SRichard LoweThe following properties are currently supported: 44bbf21555SRichard Lowe.Bl -tag -width Va 45bbf21555SRichard Lowe.It Va strict-version 46bbf21555SRichard LoweThis can be set to 0 to allow 47bbf21555SRichard Lowe.Nm 48bbf21555SRichard Loweto attach to devices supporting newer version of the NVMe 49bbf21555SRichard Lowespecification. 50bbf21555SRichard LoweThe default value is 1, limiting 51bbf21555SRichard Lowe.Nm 52*f7ce6a74SRobert Mustacchito work with devices that support major version 1 or 2. 53bbf21555SRichard Lowe.It Va ignore-unknown-vendor-status 54bbf21555SRichard LoweThis can be set to 1 to allow 55bbf21555SRichard Lowe.Nm 56bbf21555SRichard Loweto continue operating even if it receives an unknown vendor command 57bbf21555SRichard Lowestatus. 58bbf21555SRichard Lowe.It Va admin-queue-len 59bbf21555SRichard LoweThis is the number of entries in the admin command queue. 60bbf21555SRichard LoweLegal values are between 16 and 4096, the default value is 256. 61bbf21555SRichard Lowe.It Va io-squeue-len 62bbf21555SRichard LoweThis is the number of entries in each I/O submission queue. 63bbf21555SRichard LoweLegal values are between 16 and 65536, the default value is 1024. 64bbf21555SRichard Lowe.It Va io-cqueue-len 65bbf21555SRichard LoweThis is the number of entries in each I/O completion queue. 66bbf21555SRichard LoweLegal values are between 16 and 65536, the default value is 2048. 67bbf21555SRichard LoweWhen the number of submission and completion queues are the same, 68bbf21555SRichard Lowethe queue lengths will be both set to the lesser of 69bbf21555SRichard Lowe.Va io-squeue-len 70bbf21555SRichard Loweand 71bbf21555SRichard Lowe.Va io-cqueue-len . 72bbf21555SRichard Lowe.It Va async-event-limit 73bbf21555SRichard LoweThis is the maximum number of asynchronous event requests issued by 74bbf21555SRichard Lowethe driver. 75bbf21555SRichard LoweAsynchronous events are used to report error conditions. 76bbf21555SRichard LoweThe driver will never use more asynchronous events than this value, or 77bbf21555SRichard Lowewhat the hardware supports if it is less, or 1/10th of the admin queue 78bbf21555SRichard Lowelength if it is less. 79bbf21555SRichard Lowe.It Va volatile-write-cache-enable 80bbf21555SRichard LoweThis property can be set to 0 to disable the volatile write cache, if 81bbf21555SRichard Lowethe hardware supports it. 82bbf21555SRichard LoweThe default setting is 1, which enables the volatile write cache. 83bbf21555SRichard Lowe.It Va min-phys-block-size 84bbf21555SRichard LoweThis is the minimum physical block size that is reported to 85bbf21555SRichard Lowe.Xr blkdev 4D . 86bbf21555SRichard LoweThis value must be a power of 2 greater than or equal to 512. 87bbf21555SRichard LoweIf the device reports a best block size larger than what is 88bbf21555SRichard Lowespecified here the driver will ignore the value specified here. 89bbf21555SRichard Lowe.It Va max-submission-queues 90bbf21555SRichard LoweThis is the maximum number of submission queues the driver will create per 91bbf21555SRichard Lowedevice. 92bbf21555SRichard LoweLegal values are between 1 and 65535, the default is to 93bbf21555SRichard Lowematch the number for 94bbf21555SRichard Lowe.Em max-completion-queues . 95bbf21555SRichard LoweThe number of queues created will not be allowed to exceed the 96bbf21555SRichard Lowedrive's hardware limitation. 97bbf21555SRichard LoweIf the number of submission queues is larger than 98bbf21555SRichard Lowe.Em max-completion-queues 99bbf21555SRichard Lowethe completion queues will be shared across the submission 100bbf21555SRichard Lowequeues. 101bbf21555SRichard Lowe.It Va max-completion-queues 102bbf21555SRichard LoweThis is the maximum number of completion queues the driver will create per 103bbf21555SRichard Lowedevice. 104bbf21555SRichard LoweLegal values are between 1 and 65535, the default is to match 105bbf21555SRichard Lowethe number of interrupt vectors allocated to the drive. 106bbf21555SRichard LoweThe number of queues created will not exceed the number of interrupt vectors, 107bbf21555SRichard Lowe.Em max-submission-queues , 108bbf21555SRichard Loweor the drive's hardware limitation. 109bbf21555SRichard Lowe.El 1103281964bSHans Rosenfeld.Pp 1113281964bSHans RosenfeldIn addition to the above properties, some device-specific tunables can be 1123281964bSHans Rosenfeldconfigured in 1133281964bSHans Rosenfeld.Pa nvme.conf 1143281964bSHans Rosenfeldusing the 1153281964bSHans Rosenfeld.Va nvme-config-list 1163281964bSHans Rosenfeldglobal property. 1173281964bSHans RosenfeldThe value of this property is a list of triplets. 1183281964bSHans RosenfeldThe formal syntax is: 1193281964bSHans Rosenfeld.Bl -column "nvme-config-list" -offset indent 1203281964bSHans Rosenfeld.It nvme-config-list ::= <triplet> 1213281964bSHans Rosenfeld.Op \&, <triplet> Ns 1223281964bSHans Rosenfeld* 1233281964bSHans Rosenfeld; 1243281964bSHans Rosenfeld.It <triplet> ::= 1253281964bSHans Rosenfeld.Qq <model> 1263281964bSHans Rosenfeld\&, 1273281964bSHans Rosenfeld.Qq <rev-list> 1283281964bSHans Rosenfeld\&, 1293281964bSHans Rosenfeld.Qq <tuple-list> 1303281964bSHans Rosenfeld.It <rev-list> ::= 1313281964bSHans Rosenfeld.Op <fwrev> Oo \&, <fwrev> Oc Ns * 1323281964bSHans Rosenfeld.It <tuple-list> ::= 1333281964bSHans Rosenfeld<tunable> 1343281964bSHans Rosenfeld.Op \&, <tunable> Ns 1353281964bSHans Rosenfeld* 1363281964bSHans Rosenfeld.It <tunable> ::= 1373281964bSHans Rosenfeld.Qq <name> 1383281964bSHans Rosenfeld\&: 1393281964bSHans Rosenfeld.Qq <value> 1403281964bSHans Rosenfeld.El 1413281964bSHans Rosenfeld.Pp 1423281964bSHans RosenfeldThe 1433281964bSHans Rosenfeld.Va <model> 1443281964bSHans Rosenfeldand 1453281964bSHans Rosenfeld.Va <fwrev> 1463281964bSHans Rosenfeldare the strings that are returned in the 1473281964bSHans Rosenfeld.Qq Model Number 1483281964bSHans Rosenfeldand 1493281964bSHans Rosenfeld.Qq Firmware Revision 1503281964bSHans Rosenfeldfields, respectively, in the 1513281964bSHans Rosenfeld.Qq Identify Controller 1523281964bSHans Rosenfelddata structure as returned by the 1533281964bSHans Rosenfeld.Qq IDENTIFY 1543281964bSHans Rosenfeldcommand. 1553281964bSHans RosenfeldSpecifying a 1563281964bSHans Rosenfeld.Va <rev-list> 1573281964bSHans Rosenfeldis optional, an empty string 1583281964bSHans Rosenfeld.Po Qo Qc Pc 1593281964bSHans Rosenfeldmay be used instead. 1603281964bSHans Rosenfeld.Pp 1613281964bSHans RosenfeldThe 1623281964bSHans Rosenfeld.Va <tuple-list> 1633281964bSHans Rosenfeldcontains one or more tunables to apply to all controllers that match the 1643281964bSHans Rosenfeldspecified model number and optional firmware revisions. 1653281964bSHans RosenfeldEach 1663281964bSHans Rosenfeld.Va <tunable> 1673281964bSHans Rosenfeldis a 1683281964bSHans Rosenfeld.Va <name> 1693281964bSHans Rosenfeld: 1703281964bSHans Rosenfeld.Va <value> 1713281964bSHans Rosenfeldpair. 1723281964bSHans RosenfeldSupported tunable names are: 1733281964bSHans Rosenfeld.Bl -tag -width Va 1743281964bSHans Rosenfeld.It Va ignore-unknown-vendor-status 1753281964bSHans RosenfeldSimilar to the global property, this property accepts a boolean value specified 1763281964bSHans Rosenfeldas either 1773281964bSHans Rosenfeld.Qq on , 1783281964bSHans Rosenfeld.Qq off , 1793281964bSHans Rosenfeld.Qq true , 1803281964bSHans Rosenfeldor 1813281964bSHans Rosenfeld.Qq false 1823281964bSHans Rosenfeldto enable or disable the driver continuing operation even if it receives an 1833281964bSHans Rosenfeldunknown vendor command status from a controller. 1843281964bSHans Rosenfeld.It Va min-phys-block-size 1853281964bSHans RosenfeldSame as the global property, this is the minimum physical block size that is 1863281964bSHans Rosenfeldreported to 1873281964bSHans Rosenfeld.Xr blkdev 4D . 1883281964bSHans RosenfeldThis value must be a power of 2 greater than or equal to 512. 1893281964bSHans RosenfeldIf the device reports a best block size larger than what is 1903281964bSHans Rosenfeldspecified here the driver will ignore the value specified here. 1913281964bSHans Rosenfeld.It Va volatile-write-cache 1923281964bSHans RosenfeldSimilar to the global property 1933281964bSHans Rosenfeld.Va volatile-write-cache-enable , 1943281964bSHans Rosenfeldthis property accepts a boolean value specified as either 1953281964bSHans Rosenfeld.Qq on , 1963281964bSHans Rosenfeld.Qq off , 1973281964bSHans Rosenfeld.Qq true , 1983281964bSHans Rosenfeldor 1993281964bSHans Rosenfeld.Qq false 2003281964bSHans Rosenfeldto enable or disable the volatile write cache, if the hardware supports it. 2013281964bSHans RosenfeldBy default the volatile write cache is enabled. 2023281964bSHans Rosenfeld.El 203bbf21555SRichard Lowe.Sh FILES 204bbf21555SRichard Lowe.Bl -tag -compact -width Pa 205bbf21555SRichard Lowe.It Pa /dev/dsk/cntnd0sn 206bbf21555SRichard LoweBlock device minor nodes. 207bbf21555SRichard Lowe.It Pa /dev/rdsk/cntnd0sn 208bbf21555SRichard LoweRaw block device minor nodes. 209bbf21555SRichard Lowe.El 210bbf21555SRichard Lowe.Lp 211bbf21555SRichard LoweIn the device minor nodes, the following substitutions may occur: 212bbf21555SRichard Lowe.Bl -tag -offset indent -width Va 213bbf21555SRichard Lowe.It Va cn 214bbf21555SRichard LoweA controller number, typically one for each 215bbf21555SRichard Lowe.Nm 216bbf21555SRichard Lowedevice found. 217bbf21555SRichard LoweController numbers are dynamically assigned by the system. 218bbf21555SRichard Lowe.It Va tn 219bbf21555SRichard LoweThe target number. 220bbf21555SRichard LoweThis is the namespace EUI64 if available, or the namespace ID used by 221bbf21555SRichard Lowethe hardware. 222bbf21555SRichard LoweNamespace ID 0 is reserved, hence target numbers start with 1. 223bbf21555SRichard Lowe.It Va sn 224bbf21555SRichard LoweThis is the 225bbf21555SRichard Lowe.Em slice 226bbf21555SRichard Lowenumber, representing a subset of the disk. 227bbf21555SRichard LoweSee 228bbf21555SRichard Lowe.Xr dkio 4I . 229bbf21555SRichard Lowe.El 230bbf21555SRichard Lowe. 231bbf21555SRichard Lowe.Sh SEE ALSO 232bbf21555SRichard Lowe.Xr blkdev 4D 233