]>
Commit | Line | Data |
---|---|---|
982388ea ZZ |
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 | ||
8 | What is NVMe | |
9 | ============ | |
10 | ||
11 | NVM Express (NVMe) is a register level interface that allows host software to | |
12 | communicate with a non-volatile memory subsystem. This interface is optimized | |
13 | for enterprise and client solid state drives, typically attached to the PCI | |
14 | express interface. It is a scalable host controller interface designed to | |
15 | address the needs of enterprise and client systems that utilize PCI express | |
16 | based solid state drives (SSD). The interface provides optimized command | |
17 | submission and completion paths. It includes support for parallel operation by | |
18 | supporting up to 64K I/O queues with up to 64K commands per I/O queue. | |
19 | ||
20 | The device is comprised of some number of controllers, where each controller | |
21 | is comprised of some number of namespaces, where each namespace is comprised | |
22 | of some number of logical blocks. A namespace is a quantity of non-volatile | |
23 | memory that is formatted into logical blocks. An NVMe namespace is equivalent | |
24 | to a SCSI LUN. Each namespace is operated as an independent "device". | |
25 | ||
26 | How it works | |
27 | ------------ | |
28 | There is an NVMe uclass driver (driver name "nvme"), an NVMe host controller | |
29 | driver (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 | |
31 | do necessary initialization to put the controller into a ready state at which | |
32 | it is able to scan all available namespaces attached to it. Scanning namespace | |
33 | is triggered by the NVMe uclass driver and the actual work is done in the NVMe | |
34 | namespace block driver. | |
35 | ||
36 | Status | |
37 | ------ | |
38 | It only support basic block read/write functions in the NVMe driver. | |
39 | ||
40 | Config options | |
41 | -------------- | |
42 | CONFIG_NVME Enable NVMe device support |