xref: /illumos-gate/usr/src/man/man4d/nvme.4d (revision b8052df9f609edb713f6828c9eecc3d7be19dfb3)
1.\"
2.\" This file and its contents are supplied under the terms of the
3.\" Common Development and Distribution License ("CDDL"), version 1.0.
4.\" You may only use this file in accordance with the terms of version
5.\" 1.0 of the CDDL.
6.\"
7.\" A full copy of the text of the CDDL should have accompanied this
8.\" source.  A copy of the CDDL is also available via the Internet at
9.\" http://www.illumos.org/license/CDDL.
10.\"
11.\"
12.\" Copyright (c) 2018, Joyent, Inc.
13.\" Copyright 2022 Tintri by DDN, Inc. All rights reserved.
14.\"
15.Dd May 11, 2022
16.Dt NVME 4D
17.Os
18.Sh NAME
19.Nm nvme
20.Nd Intel NVMe compliant storage driver
21.Sh DESCRIPTION
22The
23.Nm
24driver uses the
25.Xr blkdev 4D
26framework to provide access to
27NVMe compliant solid-state storage devices.
28All NVMe version 1.x devices are supported.
29.Lp
30NVMe devices supporting multiple namespaces will present each
31namespace as its own
32.Xr blkdev 4D
33instance in the system.
34.
35.Sh CONFIGURATION
36The
37.Nm
38driver can be configured by defining properties in the
39.Pa nvme.conf
40file.
41The parameters are considered an unstable interface, subject to
42change without notice.
43The following properties are currently supported:
44.Bl -tag -width Va
45.It Va strict-version
46This can be set to 0 to allow
47.Nm
48to attach to devices supporting newer version of the NVMe
49specification.
50The default value is 1, limiting
51.Nm
52to work with devices that support major version 1.
53.It Va ignore-unknown-vendor-status
54This can be set to 1 to allow
55.Nm
56to continue operating even if it receives an unknown vendor command
57status.
58.It Va admin-queue-len
59This is the number of entries in the admin command queue.
60Legal values are between 16 and 4096, the default value is 256.
61.It Va io-squeue-len
62This is the number of entries in each I/O submission queue.
63Legal values are between 16 and 65536, the default value is 1024.
64.It Va io-cqueue-len
65This is the number of entries in each I/O completion queue.
66Legal values are between 16 and 65536, the default value is 2048.
67When the number of submission and completion queues are the same,
68the queue lengths will be both set to the lesser of
69.Va io-squeue-len
70and
71.Va io-cqueue-len .
72.It Va async-event-limit
73This is the maximum number of asynchronous event requests issued by
74the driver.
75Asynchronous events are used to report error conditions.
76The driver will never use more asynchronous events than this value, or
77what the hardware supports if it is less, or 1/10th of the admin queue
78length if it is less.
79.It Va volatile-write-cache-enable
80This property can be set to 0 to disable the volatile write cache, if
81the hardware supports it.
82The default setting is 1, which enables the volatile write cache.
83.It Va min-phys-block-size
84This is the minimum physical block size that is reported to
85.Xr blkdev 4D .
86This value must be a power of 2 greater than or equal to 512.
87If the device reports a best block size larger than what is
88specified here the driver will ignore the value specified here.
89.It Va max-submission-queues
90This is the maximum number of submission queues the driver will create per
91device.
92Legal values are between 1 and 65535, the default is to
93match the number for
94.Em max-completion-queues .
95The number of queues created will not be allowed to exceed the
96drive's hardware limitation.
97If the number of submission queues is larger than
98.Em max-completion-queues
99the completion queues will be shared across the submission
100queues.
101.It Va max-completion-queues
102This is the maximum number of completion queues the driver will create per
103device.
104Legal values are between 1 and 65535, the default is to match
105the number of interrupt vectors allocated to the drive.
106The number of queues created will not exceed the number of interrupt vectors,
107.Em max-submission-queues ,
108or the drive's hardware limitation.
109.El
110.Pp
111In addition to the above properties, some device-specific tunables can be
112configured in
113.Pa nvme.conf
114using the
115.Va nvme-config-list
116global property.
117The value of this property is a list of triplets.
118The formal syntax is:
119.Bl -column "nvme-config-list" -offset indent
120.It nvme-config-list	::= <triplet>
121.Op \&, <triplet> Ns
122*
123;
124.It <triplet>	::=
125.Qq <model>
126\&,
127.Qq <rev-list>
128\&,
129.Qq <tuple-list>
130.It <rev-list>	::=
131.Op <fwrev> Oo \&, <fwrev> Oc Ns *
132.It <tuple-list>	::=
133<tunable>
134.Op \&, <tunable> Ns
135*
136.It <tunable>	::=
137.Qq <name>
138\&:
139.Qq <value>
140.El
141.Pp
142The
143.Va <model>
144and
145.Va <fwrev>
146are the strings that are returned in the
147.Qq Model Number
148and
149.Qq Firmware Revision
150fields, respectively, in the
151.Qq Identify Controller
152data structure as returned by the
153.Qq IDENTIFY
154command.
155Specifying a
156.Va <rev-list>
157is optional, an empty string
158.Po Qo Qc Pc
159may be used instead.
160.Pp
161The
162.Va <tuple-list>
163contains one or more tunables to apply to all controllers that match the
164specified model number and optional firmware revisions.
165Each
166.Va <tunable>
167is a
168.Va <name>
169:
170.Va <value>
171pair.
172Supported tunable names are:
173.Bl -tag -width Va
174.It Va ignore-unknown-vendor-status
175Similar to the global property, this property accepts a boolean value specified
176as either
177.Qq on ,
178.Qq off ,
179.Qq true ,
180or
181.Qq false
182to enable or disable the driver continuing operation even if it receives an
183unknown vendor command status from a controller.
184.It Va min-phys-block-size
185Same as the global property, this is the minimum physical block size that is
186reported to
187.Xr blkdev 4D .
188This value must be a power of 2 greater than or equal to 512.
189If the device reports a best block size larger than what is
190specified here the driver will ignore the value specified here.
191.It Va volatile-write-cache
192Similar to the global property
193.Va volatile-write-cache-enable ,
194this property accepts a boolean value specified as either
195.Qq on ,
196.Qq off ,
197.Qq true ,
198or
199.Qq false
200to enable or disable the volatile write cache, if the hardware supports it.
201By default the volatile write cache is enabled.
202.El
203.Sh FILES
204.Bl -tag -compact -width Pa
205.It Pa /dev/dsk/cntnd0sn
206Block device minor nodes.
207.It Pa /dev/rdsk/cntnd0sn
208Raw block device minor nodes.
209.El
210.Lp
211In the device minor nodes, the following substitutions may occur:
212.Bl -tag -offset indent -width Va
213.It Va cn
214A controller number, typically one for each
215.Nm
216device found.
217Controller numbers are dynamically assigned by the system.
218.It Va tn
219The target number.
220This is the namespace EUI64 if available, or the namespace ID used by
221the hardware.
222Namespace ID 0 is reserved, hence target numbers start with 1.
223.It Va sn
224This is the
225.Em slice
226number, representing a subset of the disk.
227See
228.Xr dkio 4I .
229.El
230.
231.Sh SEE ALSO
232.Xr blkdev 4D
233