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