kernel - Initial native DragonFly NVME driver commit
commit97a077a0f82ec0defbf5e7dfde71f966878835e7
authorMatthew Dillon <dillon@apollo.backplane.com>
Sun, 5 Jun 2016 02:35:29 +0000 (4 19:35 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Sun, 5 Jun 2016 03:33:34 +0000 (4 20:33 -0700)
treec10d3242686d9bc9d341c23c08dca7a37522a158
parent44cdc399cf8df620c0cef5b4aef515e67abeb023
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
14 files changed:
sys/dev/disk/nvme/Makefile [new file with mode: 0644]
sys/dev/disk/nvme/nvme.c [new file with mode: 0644]
sys/dev/disk/nvme/nvme.h [new file with mode: 0644]
sys/dev/disk/nvme/nvme_admin.c [new file with mode: 0644]
sys/dev/disk/nvme/nvme_attach.c [new file with mode: 0644]
sys/dev/disk/nvme/nvme_chipset.h [new file with mode: 0644]
sys/dev/disk/nvme/nvme_datamgmt.h [new file with mode: 0644]
sys/dev/disk/nvme/nvme_disk.c [new file with mode: 0644]
sys/dev/disk/nvme/nvme_dragonfly.c [new file with mode: 0644]
sys/dev/disk/nvme/nvme_dragonfly.h [new file with mode: 0644]
sys/dev/disk/nvme/nvme_fw.h [new file with mode: 0644]
sys/dev/disk/nvme/nvme_ident.h [new file with mode: 0644]
sys/dev/disk/nvme/nvme_log.h [new file with mode: 0644]
sys/dev/disk/nvme/nvme_ns.h [new file with mode: 0644]