| # |
| # Copyright (C) 2017 NXP Semiconductors |
| # Copyright (C) 2017 Bin Meng <bmeng.cn@gmail.com> |
| # |
| # SPDX-License-Identifier: GPL-2.0+ |
| # |
| |
| What is NVMe |
| ============ |
| |
| NVM Express (NVMe) is a register level interface that allows host software to |
| communicate with a non-volatile memory subsystem. This interface is optimized |
| for enterprise and client solid state drives, typically attached to the PCI |
| express interface. It is a scalable host controller interface designed to |
| address the needs of enterprise and client systems that utilize PCI express |
| based solid state drives (SSD). The interface provides optimized command |
| submission and completion paths. It includes support for parallel operation by |
| supporting up to 64K I/O queues with up to 64K commands per I/O queue. |
| |
| The device is comprised of some number of controllers, where each controller |
| is comprised of some number of namespaces, where each namespace is comprised |
| of some number of logical blocks. A namespace is a quantity of non-volatile |
| memory that is formatted into logical blocks. An NVMe namespace is equivalent |
| to a SCSI LUN. Each namespace is operated as an independent "device". |
| |
| How it works |
| ------------ |
| There is an NVMe uclass driver (driver name "nvme"), an NVMe host controller |
| driver (driver name "nvme") and an NVMe namespace block driver (driver name |
| "nvme-blk"). The host controller driver is supposed to probe the hardware and |
| do necessary initialization to put the controller into a ready state at which |
| it is able to scan all available namespaces attached to it. Scanning namespace |
| is triggered by the NVMe uclass driver and the actual work is done in the NVMe |
| namespace block driver. |
| |
| Status |
| ------ |
| It only support basic block read/write functions in the NVMe driver. |
| |
| Config options |
| -------------- |
| CONFIG_NVME Enable NVMe device support |