xref: /illumos-gate/usr/src/man/man4d/nvme.4d (revision f7ce6a749c79a107447356b130df647b6b60d449)
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