summaryrefslogtreecommitdiff
path: root/static/netbsd/man4/nvme.4
diff options
context:
space:
mode:
Diffstat (limited to 'static/netbsd/man4/nvme.4')
-rw-r--r--static/netbsd/man4/nvme.4152
1 files changed, 152 insertions, 0 deletions
diff --git a/static/netbsd/man4/nvme.4 b/static/netbsd/man4/nvme.4
new file mode 100644
index 00000000..f606a516
--- /dev/null
+++ b/static/netbsd/man4/nvme.4
@@ -0,0 +1,152 @@
+.\" $NetBSD: nvme.4,v 1.12 2024/10/05 14:25:45 jdolecek Exp $
+.\" $OpenBSD: nvme.4,v 1.2 2016/04/14 11:53:37 jmc Exp $
+.\"
+.\" Copyright (c) 2016 David Gwynne <dlg@openbsd.org>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.Dd October 5, 2024
+.Dt NVME 4
+.Os
+.Sh NAME
+.Nm nvme
+.Nd Non-Volatile Memory Host Controller Interface
+.Sh SYNOPSIS
+.Cd "nvme* at pci? dev ? function ?"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for NVMe, or NVM Express,
+storage controllers conforming to the
+Non-Volatile Memory Host Controller Interface specification.
+Controllers complying to specification version 1.1 and 1.2 are known to work.
+Other versions should work too for normal operation with the exception of some
+pass-through commands.
+.Pp
+The driver supports the following features:
+.Bl -bullet -compact -offset indent
+.It
+controller and namespace configuration and management using
+.Xr nvmectl 8
+.It
+highly parallel I/O using per-CPU I/O queues
+.It
+PCI MSI/MSI-X attachment, and INTx for legacy systems
+.El
+.Pp
+On systems supporting MSI/MSI-X, the
+.Nm
+driver uses per-CPU IO queue pairs for lockless and highly parallelized I/O.
+Interrupt handlers are scheduled on distinct CPUs.
+The driver allocates as many interrupt vectors as available, up to number
+of CPUs + 1.
+MSI supports up to 32 interrupt vectors within the system,
+MSI-X can have up to 2k.
+Each I/O queue pair has a separate command circular buffer.
+The
+.Nm
+specification allows up to 64k commands per queue, the driver currently
+allocates 1024 entries per queue, or controller maximum, whatever is smaller.
+Command submissions are done always on the current CPU, the command completion
+interrupt is handled on the CPU corresponding to the I/O queue ID
+- first I/O queue on CPU0, second I/O queue on CPU1, etc.
+Admin queue command completion is handled by CPU0 by default.
+To keep lock contention to minimum, it is recommended to keep this assignment,
+even though it is possible to reassign the interrupt handlers differently
+using
+.Xr intrctl 8 .
+.Pp
+On systems without MSI, the driver uses a single HW interrupt handler for
+both admin and standard I/O commands.
+Command submissions are done on the current CPU, the command completion
+interrupt is handled on CPU0 by default.
+This leads to some lock contention, especially on command ccbs.
+.Pp
+The driver offloads command completion processing to soft interrupt,
+in order to increase the total system I/O capacity and throughput.
+.Sh FILES
+.Bl -tag -width /dev/nvmeX -compact
+.It Pa /dev/nvme*
+nvme device special files used by
+.Xr nvmectl 8 .
+.El
+.Sh SEE ALSO
+.Xr intro 4 ,
+.Xr ld 4 ,
+.Xr pci 4 ,
+.Xr intrctl 8 ,
+.Xr MAKEDEV 8 ,
+.Xr nvmectl 8
+.Rs
+.%A NVM Express, Inc.
+.%T "NVM Express \- scalable, efficient, and industry standard"
+.%D 2016-06-12
+.%U https://nvmexpress.org/
+.Re
+.Rs
+.%A NVM Express, Inc.
+.%T "NVM Express Revision 1.2.1"
+.%D 2016-06-05
+.%U http://www.nvmexpress.org/wp-content/uploads/NVM_Express_1_2_1_Gold_20160603.pdf
+.Re
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Ox 6.0
+and in
+.Nx 8.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An David Gwynne
+.Aq Mt dlg@openbsd.org
+for
+.Ox
+and ported to
+.Nx
+by
+.An NONAKA Kimihiro
+.Aq Mt nonaka@NetBSD.org .
+.An Jaromir Dolecek
+.Aq Mt jdolecek@NetBSD.org
+contributed to making this driver MPSAFE.
+.Sh NOTES
+At least some
+.Tn Intel
+.Nm
+adapter cards are known to require
+.Tn PCIe
+Generation 3 slot.
+Such cards do not even probe when plugged
+into older generation slot.
+.Pp
+The driver was also tested and confirmed working fine for emulated
+.Nm
+devices under QEMU 2.8.0,
+.Tn Oracle
+.Tn VirtualBox
+5.1.20,
+and
+.Tn Parallels
+Desktop 16.
+.Pp
+For
+.Tn Parallels
+Desktop, it's important the virtual machine has the NVMe disks configured
+starting from 'NVMe 1', in order for the NVMe namespaces to be correctly
+initialized and
+.Xr ld 4
+devices to be attached.