Provided by: freebsd-manpages_9.2+1-1_all bug

NAME

       nvme — NVM Express core driver

SYNOPSIS

       To compile this driver into your kernel, place the following line in your kernel configuration file:

             device nvme

       Or, to load the driver as a module at boot, place the following line in loader.conf(5):

             nvme_load="YES"

       Most  users will also want to enable nvd(4) to surface NVM Express namespaces as disk devices.  Note that
       in NVM Express terms, a namespace is roughly equivalent to a SCSI LUN.

DESCRIPTION

       The nvme driver provides support for NVM Express (NVMe) controllers, such as:

          Hardware initialization

          Per-CPU IO queue pairs

          API for registering NVMe namespace consumers such as nvd(4)

          API for submitting NVM commands to namespaces

          Ioctls for controller and namespace configuration and management nvme creates controller  devices  in
           the  format  /dev/nvmeX and namespace devices in the format /dev/nvmeXnsY.  Note that the NVM Express
           specification starts numbering namespaces at 1, not 0, and this driver follows that convention.

CONFIGURATION

       By default, nvme will create an I/O queue pair for  each  CPU,  provided  enough  MSI-X  vectors  can  be
       allocated.   To  force  a  single  I/O  queue pair shared by all CPUs, set the following tunable value in
       loader.conf(5):

             hw.nvme.per_cpu_io_queues=0

       To force  legacy  interrupts  for  all  nvme  driver  instances,  set  the  following  tunable  value  in
       loader.conf(5):

             hw.nvme.force_intx=1

       Note that use of INTx implies disabling of per-CPU I/O queue pairs.

SYSCTL VARIABLES

       The following controller-level sysctls are currently implemented:

       dev.nvme.0.int_coal_time
               (R/W) Interrupt coalescing timer period in microseconds.  Set to 0 to disable.

       dev.nvme.0.int_coal_threshold
               (R/W) Interrupt coalescing threshold in number of command completions.  Set to 0 to disable.

       The following queue pair-level sysctls are currently implemented.  Admin queue sysctls take the format of
       dev.nvme.0.adminq and I/O queue sysctls take the format of dev.nvme.0.ioq0.

       dev.nvme.0.ioq0.num_entries
               (R) Number of entries in this queue pair's command and completion queue.

       dev.nvme.0.ioq0.num_tr
               (R) Number of nvme_tracker structures currently allocated for this queue pair.

       dev.nvme.0.ioq0.num_prp_list
               (R) Number of nvme_prp_list structures currently allocated for this queue pair.

       dev.nvme.0.ioq0.sq_head
               (R)  Current  location  of the submission queue head pointer as observed by the driver.  The head
               pointer is incremented by the controller as it takes commands off of the submission queue.

       dev.nvme.0.ioq0.sq_tail
               (R) Current location of the submission queue tail pointer as observed by the driver.  The  driver
               increments  the  tail  pointer after writing a command into the submission queue to signal that a
               new command is ready to be processed.

       dev.nvme.0.ioq0.cq_head
               (R) Current location of the completion queue head pointer as observed by the driver.  The  driver
               increments  the  head  pointer  after  finishing  with  a completion entry that was posted by the
               controller.

       dev.nvme.0.ioq0.num_cmds
               (R) Number of commands that have been submitted on this queue pair.

       dev.nvme.0.ioq0.dump_debug
               (W) Writing 1 to this sysctl will dump the full contents of the submission and completion  queues
               to the console.

SEE ALSO

       nvd(4), pci(4), nvmecontrol(8), disk(9).

HISTORY

       The nvme driver first appeared in FreeBSD 9.2.

AUTHORS

       The nvme driver was developed by Intel and originally written by Jim Harris <jimharris@FreeBSD.org>, with
       contributions from Joe Golio at EMC.

       This man page was written by Jim Harris <jimharris@FreeBSD.org>.

Debian                                            July 9, 2013                                           NVME(4)