Print this page
8628 nvme: use a semaphore to guard submission queue
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Jason King <jason.king@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/io/nvme/nvme_var.h
          +++ new/usr/src/uts/common/io/nvme/nvme_var.h
↓ open down ↓ 101 lines elided ↑ open up ↑
 102  102          uint_t nq_cqhead;
 103  103          uint_t nq_cqtail;
 104  104          uintptr_t nq_cqhdbl;
 105  105  
 106  106          nvme_cmd_t **nq_cmd;
 107  107          uint16_t nq_next_cmd;
 108  108          uint_t nq_active_cmds;
 109  109          int nq_phase;
 110  110  
 111  111          kmutex_t nq_mutex;
      112 +        ksema_t nq_sema;
 112  113  };
 113  114  
 114  115  struct nvme {
 115  116          dev_info_t *n_dip;
 116  117          int n_progress;
 117  118  
 118  119          caddr_t n_regs;
 119  120          ddi_acc_handle_t n_regh;
 120  121  
 121  122          kmem_cache_t *n_cmd_cache;
↓ open down ↓ 57 lines elided ↑ open up ↑
 179  180          ddi_taskq_t *n_cmd_taskq;
 180  181  
 181  182          /* state for devctl minor node */
 182  183          nvme_minor_state_t n_minor;
 183  184  
 184  185          /* errors detected by driver */
 185  186          uint32_t n_dma_bind_err;
 186  187          uint32_t n_abort_failed;
 187  188          uint32_t n_cmd_timeout;
 188  189          uint32_t n_cmd_aborted;
 189      -        uint32_t n_async_resubmit_failed;
 190  190          uint32_t n_wrong_logpage;
 191  191          uint32_t n_unknown_logpage;
 192  192          uint32_t n_too_many_cookies;
 193      -        uint32_t n_admin_queue_full;
 194  193  
 195  194          /* errors detected by hardware */
 196  195          uint32_t n_data_xfr_err;
 197  196          uint32_t n_internal_err;
 198  197          uint32_t n_abort_rq_err;
 199  198          uint32_t n_abort_sq_del;
 200  199          uint32_t n_nvm_cap_exc;
 201  200          uint32_t n_nvm_ns_notrdy;
 202  201          uint32_t n_inv_cq_err;
 203  202          uint32_t n_inv_qid_err;
↓ open down ↓ 59 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX