1# 2# Copyright (C) 2017 NXP Semiconductors 3# Copyright (C) 2017 Bin Meng <bmeng.cn@gmail.com> 4# 5# SPDX-License-Identifier: GPL-2.0+ 6# 7 8What is NVMe 9============ 10 11NVM Express (NVMe) is a register level interface that allows host software to 12communicate with a non-volatile memory subsystem. This interface is optimized 13for enterprise and client solid state drives, typically attached to the PCI 14express interface. It is a scalable host controller interface designed to 15address the needs of enterprise and client systems that utilize PCI express 16based solid state drives (SSD). The interface provides optimized command 17submission and completion paths. It includes support for parallel operation by 18supporting up to 64K I/O queues with up to 64K commands per I/O queue. 19 20The device is comprised of some number of controllers, where each controller 21is comprised of some number of namespaces, where each namespace is comprised 22of some number of logical blocks. A namespace is a quantity of non-volatile 23memory that is formatted into logical blocks. An NVMe namespace is equivalent 24to a SCSI LUN. Each namespace is operated as an independent "device". 25 26How it works 27------------ 28There is an NVMe uclass driver (driver name "nvme"), an NVMe host controller 29driver (driver name "nvme") and an NVMe namespace block driver (driver name 30"nvme-blk"). The host controller driver is supposed to probe the hardware and 31do necessary initialization to put the controller into a ready state at which 32it is able to scan all available namespaces attached to it. Scanning namespace 33is triggered by the NVMe uclass driver and the actual work is done in the NVMe 34namespace block driver. 35 36Status 37------ 38It only support basic block read/write functions in the NVMe driver. 39 40Config options 41-------------- 42CONFIG_NVME Enable NVMe device support 43