git: kernel - Initial native DragonFly NVME driver commit
Matthew Dillon
dillon at crater.dragonflybsd.org
Sat Jun 4 20:45:06 PDT 2016
commit 97a077a0f82ec0defbf5e7dfde71f966878835e7
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Sat Jun 4 19:35:29 2016 -0700
kernel - Initial native DragonFly NVME driver commit
* Initial from-scratch NVME implementation using the NVM Express 1.2a
chipset specification pdf. Nothing ported from anywhere else.
Basic implementation.
* Not yet connected to the build, interrupts are not yet functional
(it currently just polls at 100hz for testing), some additional error
handling is needed, and we will need ioctl support and a userland utility
to do various administrative tasks like formatting.
* Near full header spec keyed in including the bits we don't use (yet).
* Full SMP BIO interface and four different queue topologies implemented
depending on how many queues the chipset lets us create. The best is
ncpus * 4 queues, i.e. (low, high priority) x (read, write) per cpu.
The second best is just (low, high priority) x (read, write) shared between
all cpus.
Extremely low BIO overhead. Full strategy support and beginnings of
optimizations for low-latency I/Os (currently a hack).
* Initial testing with multiple concurrent sequential dd's on a little
samsung nvme mini-pcie card:
1.2 GBytes/sec 16KB
2.0 GBytes/sec 32KB
2.5 GBytes/sec 64KB
Summary of changes:
sys/dev/disk/nvme/Makefile | 10 +
sys/dev/disk/nvme/nvme.c | 659 +++++++++++++
sys/dev/disk/nvme/nvme.h | 288 ++++++
sys/dev/disk/nvme/nvme_admin.c | 497 ++++++++++
sys/dev/disk/nvme/nvme_attach.c | 408 ++++++++
sys/dev/disk/nvme/nvme_chipset.h | 1806 ++++++++++++++++++++++++++++++++++++
sys/dev/disk/nvme/nvme_datamgmt.h | 34 +
sys/dev/disk/nvme/nvme_disk.c | 310 +++++++
sys/dev/disk/nvme/nvme_dragonfly.c | 222 +++++
sys/dev/disk/nvme/nvme_dragonfly.h | 65 ++
sys/dev/disk/nvme/nvme_fw.h | 33 +
sys/dev/disk/nvme/nvme_ident.h | 310 +++++++
sys/dev/disk/nvme/nvme_log.h | 175 ++++
sys/dev/disk/nvme/nvme_ns.h | 53 ++
14 files changed, 4870 insertions(+)
create mode 100644 sys/dev/disk/nvme/Makefile
create mode 100644 sys/dev/disk/nvme/nvme.c
create mode 100644 sys/dev/disk/nvme/nvme.h
create mode 100644 sys/dev/disk/nvme/nvme_admin.c
create mode 100644 sys/dev/disk/nvme/nvme_attach.c
create mode 100644 sys/dev/disk/nvme/nvme_chipset.h
create mode 100644 sys/dev/disk/nvme/nvme_datamgmt.h
create mode 100644 sys/dev/disk/nvme/nvme_disk.c
create mode 100644 sys/dev/disk/nvme/nvme_dragonfly.c
create mode 100644 sys/dev/disk/nvme/nvme_dragonfly.h
create mode 100644 sys/dev/disk/nvme/nvme_fw.h
create mode 100644 sys/dev/disk/nvme/nvme_ident.h
create mode 100644 sys/dev/disk/nvme/nvme_log.h
create mode 100644 sys/dev/disk/nvme/nvme_ns.h
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/97a077a0f82ec0defbf5e7dfde71f966878835e7
--
DragonFly BSD source repository
More information about the Commits
mailing list