nvme - Implement MSIX and reverse comq mapping
authorMatthew Dillon <dillon@apollo.backplane.com>
Mon, 6 Jun 2016 03:41:00 +0000 (20:41 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Mon, 6 Jun 2016 03:41:00 +0000 (20:41 -0700)
commit18d2384b5921bf30fe7665539efd40b40f7df232
tree2a3a24f85767a038a06b958327b0baae0b9bc72f
parentb7b7450f8e83fecfa0bfdbe44c00b5559c8e2915
nvme - Implement MSIX and reverse comq mapping

* Implement MSIX.  Map completion queues to cpus via a rotation.

* Adjust the comq mapping code.  For now prioritize assigning a 1:1 cpu
  mapping for submission and completion queues over creating separate
  queues for reads and writes.

* Tested, systat -pv 1 shows this is capable of pushing 50,000+ interrupts
  per second on EACH cpu (all 8 in the xeon box I tested), and run
  250,000 IOPS x 2 cards (500,000 IOPS) using interrupt based comq handling.
sys/dev/disk/nvme/nvme.c
sys/dev/disk/nvme/nvme.h
sys/dev/disk/nvme/nvme_admin.c
sys/dev/disk/nvme/nvme_attach.c