92 size_t nq_nentry;
93
94 nvme_dma_t *nq_sqdma;
95 nvme_sqe_t *nq_sq;
96 uint_t nq_sqhead;
97 uint_t nq_sqtail;
98 uintptr_t nq_sqtdbl;
99
100 nvme_dma_t *nq_cqdma;
101 nvme_cqe_t *nq_cq;
102 uint_t nq_cqhead;
103 uint_t nq_cqtail;
104 uintptr_t nq_cqhdbl;
105
106 nvme_cmd_t **nq_cmd;
107 uint16_t nq_next_cmd;
108 uint_t nq_active_cmds;
109 int nq_phase;
110
111 kmutex_t nq_mutex;
112 };
113
114 struct nvme {
115 dev_info_t *n_dip;
116 int n_progress;
117
118 caddr_t n_regs;
119 ddi_acc_handle_t n_regh;
120
121 kmem_cache_t *n_cmd_cache;
122 kmem_cache_t *n_prp_cache;
123
124 size_t n_inth_sz;
125 ddi_intr_handle_t *n_inth;
126 int n_intr_cnt;
127 uint_t n_intr_pri;
128 int n_intr_cap;
129 int n_intr_type;
130 int n_intr_types;
131
169
170 ddi_dma_attr_t n_queue_dma_attr;
171 ddi_dma_attr_t n_prp_dma_attr;
172 ddi_dma_attr_t n_sgl_dma_attr;
173 ddi_device_acc_attr_t n_reg_acc_attr;
174 ddi_iblock_cookie_t n_fm_ibc;
175 int n_fm_cap;
176
177 ksema_t n_abort_sema;
178
179 ddi_taskq_t *n_cmd_taskq;
180
181 /* state for devctl minor node */
182 nvme_minor_state_t n_minor;
183
184 /* errors detected by driver */
185 uint32_t n_dma_bind_err;
186 uint32_t n_abort_failed;
187 uint32_t n_cmd_timeout;
188 uint32_t n_cmd_aborted;
189 uint32_t n_async_resubmit_failed;
190 uint32_t n_wrong_logpage;
191 uint32_t n_unknown_logpage;
192 uint32_t n_too_many_cookies;
193 uint32_t n_admin_queue_full;
194
195 /* errors detected by hardware */
196 uint32_t n_data_xfr_err;
197 uint32_t n_internal_err;
198 uint32_t n_abort_rq_err;
199 uint32_t n_abort_sq_del;
200 uint32_t n_nvm_cap_exc;
201 uint32_t n_nvm_ns_notrdy;
202 uint32_t n_inv_cq_err;
203 uint32_t n_inv_qid_err;
204 uint32_t n_max_qsz_exc;
205 uint32_t n_inv_int_vect;
206 uint32_t n_inv_log_page;
207 uint32_t n_inv_format;
208 uint32_t n_inv_q_del;
209 uint32_t n_cnfl_attr;
210 uint32_t n_inv_prot;
211 uint32_t n_readonly;
212
213 /* errors reported by asynchronous events */
|
92 size_t nq_nentry;
93
94 nvme_dma_t *nq_sqdma;
95 nvme_sqe_t *nq_sq;
96 uint_t nq_sqhead;
97 uint_t nq_sqtail;
98 uintptr_t nq_sqtdbl;
99
100 nvme_dma_t *nq_cqdma;
101 nvme_cqe_t *nq_cq;
102 uint_t nq_cqhead;
103 uint_t nq_cqtail;
104 uintptr_t nq_cqhdbl;
105
106 nvme_cmd_t **nq_cmd;
107 uint16_t nq_next_cmd;
108 uint_t nq_active_cmds;
109 int nq_phase;
110
111 kmutex_t nq_mutex;
112 ksema_t nq_sema;
113 };
114
115 struct nvme {
116 dev_info_t *n_dip;
117 int n_progress;
118
119 caddr_t n_regs;
120 ddi_acc_handle_t n_regh;
121
122 kmem_cache_t *n_cmd_cache;
123 kmem_cache_t *n_prp_cache;
124
125 size_t n_inth_sz;
126 ddi_intr_handle_t *n_inth;
127 int n_intr_cnt;
128 uint_t n_intr_pri;
129 int n_intr_cap;
130 int n_intr_type;
131 int n_intr_types;
132
170
171 ddi_dma_attr_t n_queue_dma_attr;
172 ddi_dma_attr_t n_prp_dma_attr;
173 ddi_dma_attr_t n_sgl_dma_attr;
174 ddi_device_acc_attr_t n_reg_acc_attr;
175 ddi_iblock_cookie_t n_fm_ibc;
176 int n_fm_cap;
177
178 ksema_t n_abort_sema;
179
180 ddi_taskq_t *n_cmd_taskq;
181
182 /* state for devctl minor node */
183 nvme_minor_state_t n_minor;
184
185 /* errors detected by driver */
186 uint32_t n_dma_bind_err;
187 uint32_t n_abort_failed;
188 uint32_t n_cmd_timeout;
189 uint32_t n_cmd_aborted;
190 uint32_t n_wrong_logpage;
191 uint32_t n_unknown_logpage;
192 uint32_t n_too_many_cookies;
193
194 /* errors detected by hardware */
195 uint32_t n_data_xfr_err;
196 uint32_t n_internal_err;
197 uint32_t n_abort_rq_err;
198 uint32_t n_abort_sq_del;
199 uint32_t n_nvm_cap_exc;
200 uint32_t n_nvm_ns_notrdy;
201 uint32_t n_inv_cq_err;
202 uint32_t n_inv_qid_err;
203 uint32_t n_max_qsz_exc;
204 uint32_t n_inv_int_vect;
205 uint32_t n_inv_log_page;
206 uint32_t n_inv_format;
207 uint32_t n_inv_q_del;
208 uint32_t n_cnfl_attr;
209 uint32_t n_inv_prot;
210 uint32_t n_readonly;
211
212 /* errors reported by asynchronous events */
|