Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
NVME(4)			 BSD Kernel Interfaces Manual		       NVME(4)

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 name-
     spaces 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:

     o	 Hardware initialization

     o	 Per-CPU IO queue pairs

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

     o	 API for submitting NVM	commands to namespaces

     o	 Ioctls	for controller and namespace configuration and management nvme
	 creates controller devices in the format /dev/nvmeX and namespace de-
	 vices in the format /dev/nvmeXnsY.  Note that the NVM Express speci-
	 fication 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 follow-
     ing 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 comple-
	     tions.  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 ob-
	     served 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 ob-
	     served by the driver.  The	driver increments the tail pointer af-
	     ter 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 ob-
	     served by the driver.  The	driver increments the head pointer af-
	     ter finishing with	a completion entry that	was posted by the con-
	     troller.

     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>.

BSD				 July 9, 2013				   BSD

NAME | SYNOPSIS | DESCRIPTION | CONFIGURATION | SYSCTL VARIABLES | SEE ALSO | HISTORY | AUTHORS

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=nvme&sektion=4&manpath=FreeBSD+9.2-RELEASE>

home | help