Blame view
include/linux/nvme.h
36.3 KB
fadccd8fc nvme_ioctl.h: rem... |
1 |
/* SPDX-License-Identifier: GPL-2.0 */ |
b60503ba4 NVMe: New driver |
2 3 |
/* * Definitions for the NVM Express interface |
8757ad65d NVMe: Update copy... |
4 |
* Copyright (c) 2011-2014, Intel Corporation. |
b60503ba4 NVMe: New driver |
5 6 7 8 |
*/ #ifndef _LINUX_NVME_H #define _LINUX_NVME_H |
2812dfe37 nvme: include <li... |
9 |
#include <linux/types.h> |
8e4122632 nvme: switch to u... |
10 |
#include <linux/uuid.h> |
eb793e2c9 nvme.h: add NVMe ... |
11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
/* NQN names in commands fields specified one size */ #define NVMF_NQN_FIELD_LEN 256 /* However the max length of a qualified name is another size */ #define NVMF_NQN_SIZE 223 #define NVMF_TRSVCID_SIZE 32 #define NVMF_TRADDR_SIZE 256 #define NVMF_TSAS_SIZE 256 #define NVME_DISC_SUBSYS_NAME "nqn.2014-08.org.nvmexpress.discovery" #define NVME_RDMA_IP_PORT 4420 |
62346eaeb nvme: define NVME... |
25 |
#define NVME_NSID_ALL 0xffffffff |
eb793e2c9 nvme.h: add NVMe ... |
26 27 28 29 30 31 32 33 34 35 36 37 |
enum nvme_subsys_type { NVME_NQN_DISC = 1, /* Discovery type target subsystem */ NVME_NQN_NVME = 2, /* NVME type target subsystem */ }; /* Address Family codes for Discovery Log Page entry ADRFAM field */ enum { NVMF_ADDR_FAMILY_PCI = 0, /* PCIe */ NVMF_ADDR_FAMILY_IP4 = 1, /* IP4 */ NVMF_ADDR_FAMILY_IP6 = 2, /* IP6 */ NVMF_ADDR_FAMILY_IB = 3, /* InfiniBand */ NVMF_ADDR_FAMILY_FC = 4, /* Fibre Channel */ |
d02abd198 nvmet: align addr... |
38 39 |
NVMF_ADDR_FAMILY_LOOP = 254, /* Reserved for host usage */ NVMF_ADDR_FAMILY_MAX, |
eb793e2c9 nvme.h: add NVMe ... |
40 41 42 43 44 45 |
}; /* Transport Type codes for Discovery Log Page entry TRTYPE field */ enum { NVMF_TRTYPE_RDMA = 1, /* RDMA */ NVMF_TRTYPE_FC = 2, /* Fibre Channel */ |
fc221d054 nvme-tcp: Add pro... |
46 |
NVMF_TRTYPE_TCP = 3, /* TCP/IP */ |
eb793e2c9 nvme.h: add NVMe ... |
47 48 49 50 51 52 |
NVMF_TRTYPE_LOOP = 254, /* Reserved for host usage */ NVMF_TRTYPE_MAX, }; /* Transport Requirements codes for Discovery Log Page entry TREQ field */ enum { |
9b95d2fb8 nvmet: expose sup... |
53 54 55 |
NVMF_TREQ_NOT_SPECIFIED = 0, /* Not specified */ NVMF_TREQ_REQUIRED = 1, /* Required */ NVMF_TREQ_NOT_REQUIRED = 2, /* Not Required */ |
0445e1b5a nvmet: don't over... |
56 57 |
#define NVME_TREQ_SECURE_CHANNEL_MASK \ (NVMF_TREQ_REQUIRED | NVMF_TREQ_NOT_REQUIRED) |
9b95d2fb8 nvmet: expose sup... |
58 59 |
NVMF_TREQ_DISABLE_SQFLOW = (1 << 2), /* Supports SQ flow control disable */ |
eb793e2c9 nvme.h: add NVMe ... |
60 61 62 63 64 65 |
}; /* RDMA QP Service Type codes for Discovery Log Page entry TSAS * RDMA_QPTYPE field */ enum { |
bf17aa36c nvme: Correct NVM... |
66 67 |
NVMF_RDMA_QPTYPE_CONNECTED = 1, /* Reliable Connected */ NVMF_RDMA_QPTYPE_DATAGRAM = 2, /* Reliable Datagram */ |
eb793e2c9 nvme.h: add NVMe ... |
68 69 70 71 72 73 |
}; /* RDMA QP Service Type codes for Discovery Log Page entry TSAS * RDMA_QPTYPE field */ enum { |
bf17aa36c nvme: Correct NVM... |
74 75 76 77 78 |
NVMF_RDMA_PRTYPE_NOT_SPECIFIED = 1, /* No Provider Specified */ NVMF_RDMA_PRTYPE_IB = 2, /* InfiniBand */ NVMF_RDMA_PRTYPE_ROCE = 3, /* InfiniBand RoCE */ NVMF_RDMA_PRTYPE_ROCEV2 = 4, /* InfiniBand RoCEV2 */ NVMF_RDMA_PRTYPE_IWARP = 5, /* IWARP */ |
eb793e2c9 nvme.h: add NVMe ... |
79 80 81 82 83 84 |
}; /* RDMA Connection Management Service Type codes for Discovery Log Page * entry TSAS RDMA_CMS field */ enum { |
bf17aa36c nvme: Correct NVM... |
85 |
NVMF_RDMA_CMS_RDMA_CM = 1, /* Sockets based endpoint addressing */ |
eb793e2c9 nvme.h: add NVMe ... |
86 |
}; |
7aa1f4275 nvme: use a singl... |
87 |
#define NVME_AQ_DEPTH 32 |
38dabe210 nvme: centralize ... |
88 89 90 91 92 93 94 95 |
#define NVME_NR_AEN_COMMANDS 1 #define NVME_AQ_BLK_MQ_DEPTH (NVME_AQ_DEPTH - NVME_NR_AEN_COMMANDS) /* * Subtract one to leave an empty queue entry for 'Full Queue' condition. See * NVM-Express 1.2 specification, section 4.1.2. */ #define NVME_AQ_MQ_TAG_DEPTH (NVME_AQ_BLK_MQ_DEPTH - 1) |
2812dfe37 nvme: include <li... |
96 |
|
7a67cbea6 nvme: use offset ... |
97 98 99 100 |
enum { NVME_REG_CAP = 0x0000, /* Controller Capabilities */ NVME_REG_VS = 0x0008, /* Version */ NVME_REG_INTMS = 0x000c, /* Interrupt Mask Set */ |
a5b714ad3 NVMe: correct com... |
101 |
NVME_REG_INTMC = 0x0010, /* Interrupt Mask Clear */ |
7a67cbea6 nvme: use offset ... |
102 103 104 105 106 |
NVME_REG_CC = 0x0014, /* Controller Configuration */ NVME_REG_CSTS = 0x001c, /* Controller Status */ NVME_REG_NSSR = 0x0020, /* NVM Subsystem Reset */ NVME_REG_AQA = 0x0024, /* Admin Queue Attributes */ NVME_REG_ASQ = 0x0028, /* Admin SQ Base Address */ |
a5b714ad3 NVMe: correct com... |
107 |
NVME_REG_ACQ = 0x0030, /* Admin CQ Base Address */ |
48c9e85b2 nvme: resync incl... |
108 |
NVME_REG_CMBLOC = 0x0038, /* Controller Memory Buffer Location */ |
7a67cbea6 nvme: use offset ... |
109 |
NVME_REG_CMBSZ = 0x003c, /* Controller Memory Buffer Size */ |
48c9e85b2 nvme: resync incl... |
110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
NVME_REG_BPINFO = 0x0040, /* Boot Partition Information */ NVME_REG_BPRSEL = 0x0044, /* Boot Partition Read Select */ NVME_REG_BPMBL = 0x0048, /* Boot Partition Memory Buffer * Location */ NVME_REG_PMRCAP = 0x0e00, /* Persistent Memory Capabilities */ NVME_REG_PMRCTL = 0x0e04, /* Persistent Memory Region Control */ NVME_REG_PMRSTS = 0x0e08, /* Persistent Memory Region Status */ NVME_REG_PMREBS = 0x0e0c, /* Persistent Memory Region Elasticity * Buffer Size */ NVME_REG_PMRSWTP = 0x0e10, /* Persistent Memory Region Sustained * Write Throughput */ |
97f6ef646 nvme-pci: remap B... |
124 |
NVME_REG_DBS = 0x1000, /* SQ 0 Tail Doorbell */ |
b60503ba4 NVMe: New driver |
125 |
}; |
a0cadb85b NVMe: Do not set ... |
126 |
#define NVME_CAP_MQES(cap) ((cap) & 0xffff) |
22605f968 NVMe: Time out in... |
127 |
#define NVME_CAP_TIMEOUT(cap) (((cap) >> 24) & 0xff) |
f1938f6e1 NVMe: Implement d... |
128 |
#define NVME_CAP_STRIDE(cap) (((cap) >> 32) & 0xf) |
dfbac8c7a NVMe: Add nvme su... |
129 |
#define NVME_CAP_NSSRC(cap) (((cap) >> 36) & 0x1) |
71010c309 nvme: implement m... |
130 |
#define NVME_CAP_CSS(cap) (((cap) >> 37) & 0xff) |
8fc23e032 NVMe: Set block q... |
131 |
#define NVME_CAP_MPSMIN(cap) (((cap) >> 48) & 0xf) |
1d0906246 NVMe: Mismatched ... |
132 |
#define NVME_CAP_MPSMAX(cap) (((cap) >> 52) & 0xf) |
22605f968 NVMe: Time out in... |
133 |
|
8ffaadf74 NVMe: Use CMB for... |
134 135 |
#define NVME_CMB_BIR(cmbloc) ((cmbloc) & 0x7) #define NVME_CMB_OFST(cmbloc) (((cmbloc) >> 12) & 0xfffff) |
88de4598b nvme-pci: clean u... |
136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
enum { NVME_CMBSZ_SQS = 1 << 0, NVME_CMBSZ_CQS = 1 << 1, NVME_CMBSZ_LISTS = 1 << 2, NVME_CMBSZ_RDS = 1 << 3, NVME_CMBSZ_WDS = 1 << 4, NVME_CMBSZ_SZ_SHIFT = 12, NVME_CMBSZ_SZ_MASK = 0xfffff, NVME_CMBSZ_SZU_SHIFT = 8, NVME_CMBSZ_SZU_MASK = 0xf, }; |
8ffaadf74 NVMe: Use CMB for... |
150 |
|
69cd27e25 nvme.h: add NVM c... |
151 152 153 154 |
/* * Submission and Completion Queue Entry Sizes for the NVM command set. * (In bytes and specified as a power of two (2^n)). */ |
c1e0cc7e1 nvme-pci: Add sup... |
155 |
#define NVME_ADM_SQES 6 |
69cd27e25 nvme.h: add NVM c... |
156 157 |
#define NVME_NVM_IOSQES 6 #define NVME_NVM_IOCQES 4 |
b60503ba4 NVMe: New driver |
158 159 |
enum { NVME_CC_ENABLE = 1 << 0, |
ad4e05b24 nvme: add symboli... |
160 161 |
NVME_CC_EN_SHIFT = 0, NVME_CC_CSS_SHIFT = 4, |
b60503ba4 NVMe: New driver |
162 |
NVME_CC_MPS_SHIFT = 7, |
ad4e05b24 nvme: add symboli... |
163 164 165 166 |
NVME_CC_AMS_SHIFT = 11, NVME_CC_SHN_SHIFT = 14, NVME_CC_IOSQES_SHIFT = 16, NVME_CC_IOCQES_SHIFT = 20, |
71010c309 nvme: implement m... |
167 168 169 |
NVME_CC_CSS_NVM = 0 << NVME_CC_CSS_SHIFT, NVME_CC_CSS_CSI = 6 << NVME_CC_CSS_SHIFT, NVME_CC_CSS_MASK = 7 << NVME_CC_CSS_SHIFT, |
60b43f627 nvme: rename AMS ... |
170 171 172 |
NVME_CC_AMS_RR = 0 << NVME_CC_AMS_SHIFT, NVME_CC_AMS_WRRU = 1 << NVME_CC_AMS_SHIFT, NVME_CC_AMS_VS = 7 << NVME_CC_AMS_SHIFT, |
ad4e05b24 nvme: add symboli... |
173 174 175 176 177 178 |
NVME_CC_SHN_NONE = 0 << NVME_CC_SHN_SHIFT, NVME_CC_SHN_NORMAL = 1 << NVME_CC_SHN_SHIFT, NVME_CC_SHN_ABRUPT = 2 << NVME_CC_SHN_SHIFT, NVME_CC_SHN_MASK = 3 << NVME_CC_SHN_SHIFT, NVME_CC_IOSQES = NVME_NVM_IOSQES << NVME_CC_IOSQES_SHIFT, NVME_CC_IOCQES = NVME_NVM_IOCQES << NVME_CC_IOCQES_SHIFT, |
71010c309 nvme: implement m... |
179 180 |
NVME_CAP_CSS_NVM = 1 << 0, NVME_CAP_CSS_CSI = 1 << 6, |
b60503ba4 NVMe: New driver |
181 182 |
NVME_CSTS_RDY = 1 << 0, NVME_CSTS_CFS = 1 << 1, |
dfbac8c7a NVMe: Add nvme su... |
183 |
NVME_CSTS_NSSRO = 1 << 4, |
b6dccf7fa nvme: add support... |
184 |
NVME_CSTS_PP = 1 << 5, |
b60503ba4 NVMe: New driver |
185 186 187 |
NVME_CSTS_SHST_NORMAL = 0 << 2, NVME_CSTS_SHST_OCCUR = 1 << 2, NVME_CSTS_SHST_CMPLT = 2 << 2, |
1894d8f16 NVMe: Use normal ... |
188 |
NVME_CSTS_SHST_MASK = 3 << 2, |
b60503ba4 NVMe: New driver |
189 |
}; |
9d99a8dda nvme: move hardwa... |
190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 |
struct nvme_id_power_state { __le16 max_power; /* centiwatts */ __u8 rsvd2; __u8 flags; __le32 entry_lat; /* microseconds */ __le32 exit_lat; /* microseconds */ __u8 read_tput; __u8 read_lat; __u8 write_tput; __u8 write_lat; __le16 idle_power; __u8 idle_scale; __u8 rsvd19; __le16 active_power; __u8 active_work_scale; __u8 rsvd23[9]; }; enum { NVME_PS_FLAGS_MAX_POWER_SCALE = 1 << 0, NVME_PS_FLAGS_NON_OP_STATE = 1 << 1, }; |
12b211716 nvme: introduce c... |
212 213 |
enum nvme_ctrl_attr { NVME_CTRL_ATTR_HID_128_BIT = (1 << 0), |
6e3ca03ee nvme: support tra... |
214 |
NVME_CTRL_ATTR_TBKAS = (1 << 6), |
12b211716 nvme: introduce c... |
215 |
}; |
9d99a8dda nvme: move hardwa... |
216 217 218 219 220 221 222 223 |
struct nvme_id_ctrl { __le16 vid; __le16 ssvid; char sn[20]; char mn[40]; char fr[8]; __u8 rab; __u8 ieee[3]; |
a446c0840 nvme.h: resync wi... |
224 |
__u8 cmic; |
9d99a8dda nvme: move hardwa... |
225 |
__u8 mdts; |
08c69640c nvme.h: add missi... |
226 227 |
__le16 cntlid; __le32 ver; |
14e974a84 nvme.h: add RTD3R... |
228 229 230 |
__le32 rtd3r; __le32 rtd3e; __le32 oaes; |
eb793e2c9 nvme.h: add NVMe ... |
231 |
__le32 ctratt; |
49cd84b6f nvme: implement E... |
232 233 234 235 236 |
__u8 rsvd100[28]; __le16 crdt1; __le16 crdt2; __le16 crdt3; __u8 rsvd134[122]; |
9d99a8dda nvme: move hardwa... |
237 238 239 240 241 242 243 244 245 246 247 |
__le16 oacs; __u8 acl; __u8 aerl; __u8 frmw; __u8 lpa; __u8 elpe; __u8 npss; __u8 avscc; __u8 apsta; __le16 wctemp; __le16 cctemp; |
a446c0840 nvme.h: resync wi... |
248 249 250 251 252 253 |
__le16 mtfa; __le32 hmpre; __le32 hmmin; __u8 tnvmcap[16]; __u8 unvmcap[16]; __le32 rpmbs; |
435e80905 nvme: add fields ... |
254 255 256 |
__le16 edstt; __u8 dsto; __u8 fwug; |
7b89eae29 nvme.h: Add keep-... |
257 |
__le16 kas; |
435e80905 nvme: add fields ... |
258 259 260 261 |
__le16 hctma; __le16 mntmt; __le16 mxtmt; __le32 sanicap; |
044a9df1a nvme-pci: impleme... |
262 263 |
__le32 hmminds; __le16 hmmaxd; |
1a3762165 nvme.h: add ANA d... |
264 265 266 267 268 269 |
__u8 rsvd338[4]; __u8 anatt; __u8 anacap; __le32 anagrpmax; __le32 nanagrpid; __u8 rsvd352[160]; |
9d99a8dda nvme: move hardwa... |
270 271 |
__u8 sqes; __u8 cqes; |
eb793e2c9 nvme.h: add NVMe ... |
272 |
__le16 maxcmd; |
9d99a8dda nvme: move hardwa... |
273 274 275 276 277 278 279 280 |
__le32 nn; __le16 oncs; __le16 fuses; __u8 fna; __u8 vwc; __le16 awun; __le16 awupf; __u8 nvscc; |
93045d594 nvme.h: add suppo... |
281 |
__u8 nwpc; |
9d99a8dda nvme: move hardwa... |
282 283 284 |
__le16 acwu; __u8 rsvd534[2]; __le32 sgls; |
1a3762165 nvme.h: add ANA d... |
285 286 |
__le32 mnan; __u8 rsvd544[224]; |
eb793e2c9 nvme.h: add NVMe ... |
287 288 289 290 291 292 293 294 |
char subnqn[256]; __u8 rsvd1024[768]; __le32 ioccsz; __le32 iorcsz; __le16 icdoff; __u8 ctrattr; __u8 msdbd; __u8 rsvd1804[244]; |
9d99a8dda nvme: move hardwa... |
295 296 297 298 299 |
struct nvme_id_power_state psd[32]; __u8 vs[1024]; }; enum { |
92decf118 nvme: define cons... |
300 301 |
NVME_CTRL_CMIC_MULTI_CTRL = 1 << 1, NVME_CTRL_CMIC_ANA = 1 << 3, |
9d99a8dda nvme: move hardwa... |
302 303 304 |
NVME_CTRL_ONCS_COMPARE = 1 << 0, NVME_CTRL_ONCS_WRITE_UNCORRECTABLE = 1 << 1, NVME_CTRL_ONCS_DSM = 1 << 2, |
3b7c33b28 nvme.h: add Write... |
305 |
NVME_CTRL_ONCS_WRITE_ZEROES = 1 << 3, |
c1fef73f7 nvmet: add passth... |
306 |
NVME_CTRL_ONCS_RESERVATIONS = 1 << 5, |
dbf86b390 nvme: add support... |
307 |
NVME_CTRL_ONCS_TIMESTAMP = 1 << 6, |
9d99a8dda nvme: move hardwa... |
308 |
NVME_CTRL_VWC_PRESENT = 1 << 0, |
8a9ae5232 nvme: Check for S... |
309 |
NVME_CTRL_OACS_SEC_SUPP = 1 << 0, |
f5d118406 nvme: add support... |
310 |
NVME_CTRL_OACS_DIRECTIVES = 1 << 5, |
223694b9a nvme: fix the def... |
311 |
NVME_CTRL_OACS_DBBUF_SUPP = 1 << 8, |
84fef62d1 nvme: check admin... |
312 |
NVME_CTRL_LPA_CMD_EFFECTS_LOG = 1 << 1, |
48c9e85b2 nvme: resync incl... |
313 314 315 316 317 318 319 320 |
NVME_CTRL_CTRATT_128_ID = 1 << 0, NVME_CTRL_CTRATT_NON_OP_PSP = 1 << 1, NVME_CTRL_CTRATT_NVM_SETS = 1 << 2, NVME_CTRL_CTRATT_READ_RECV_LVLS = 1 << 3, NVME_CTRL_CTRATT_ENDURANCE_GROUPS = 1 << 4, NVME_CTRL_CTRATT_PREDICTABLE_LAT = 1 << 5, NVME_CTRL_CTRATT_NAMESPACE_GRANULARITY = 1 << 7, NVME_CTRL_CTRATT_UUID_LIST = 1 << 9, |
9d99a8dda nvme: move hardwa... |
321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 |
}; struct nvme_lbaf { __le16 ms; __u8 ds; __u8 rp; }; struct nvme_id_ns { __le64 nsze; __le64 ncap; __le64 nuse; __u8 nsfeat; __u8 nlbaf; __u8 flbas; __u8 mc; __u8 dpc; __u8 dps; __u8 nmic; __u8 rescap; __u8 fpi; |
6605bdd59 nvme: add I/O cha... |
342 |
__u8 dlfeat; |
9d99a8dda nvme: move hardwa... |
343 344 345 346 347 348 |
__le16 nawun; __le16 nawupf; __le16 nacwu; __le16 nabsn; __le16 nabo; __le16 nabspf; |
6b8190d61 nvme: implement N... |
349 |
__le16 noiob; |
a446c0840 nvme.h: resync wi... |
350 |
__u8 nvmcap[16]; |
6605bdd59 nvme: add I/O cha... |
351 352 353 354 355 356 |
__le16 npwg; __le16 npwa; __le16 npdg; __le16 npda; __le16 nows; __u8 rsvd74[18]; |
1a3762165 nvme.h: add ANA d... |
357 |
__le32 anagrpid; |
93045d594 nvme.h: add suppo... |
358 359 |
__u8 rsvd96[3]; __u8 nsattr; |
6605bdd59 nvme: add I/O cha... |
360 361 |
__le16 nvmsetid; __le16 endgid; |
9d99a8dda nvme: move hardwa... |
362 363 364 365 366 367 |
__u8 nguid[16]; __u8 eui64[8]; struct nvme_lbaf lbaf[16]; __u8 rsvd192[192]; __u8 vs[3712]; }; |
240e6ee27 nvme: support for... |
368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 |
struct nvme_zns_lbafe { __le64 zsze; __u8 zdes; __u8 rsvd9[7]; }; struct nvme_id_ns_zns { __le16 zoc; __le16 ozcs; __le32 mar; __le32 mor; __le32 rrl; __le32 frl; __u8 rsvd20[2796]; struct nvme_zns_lbafe lbafe[16]; __u8 rsvd3072[768]; __u8 vs[256]; }; struct nvme_id_ctrl_zns { __u8 zasl; __u8 rsvd1[4095]; }; |
9d99a8dda nvme: move hardwa... |
391 |
enum { |
329dd7681 nvme.h: add an en... |
392 393 394 |
NVME_ID_CNS_NS = 0x00, NVME_ID_CNS_CTRL = 0x01, NVME_ID_CNS_NS_ACTIVE_LIST = 0x02, |
af8b86e9a nvme: introduce N... |
395 |
NVME_ID_CNS_NS_DESC_LIST = 0x03, |
71010c309 nvme: implement m... |
396 397 |
NVME_ID_CNS_CS_NS = 0x05, NVME_ID_CNS_CS_CTRL = 0x06, |
329dd7681 nvme.h: add an en... |
398 399 400 401 |
NVME_ID_CNS_NS_PRESENT_LIST = 0x10, NVME_ID_CNS_NS_PRESENT = 0x11, NVME_ID_CNS_CTRL_NS_LIST = 0x12, NVME_ID_CNS_CTRL_LIST = 0x13, |
48c9e85b2 nvme: resync incl... |
402 403 404 |
NVME_ID_CNS_SCNDRY_CTRL_LIST = 0x15, NVME_ID_CNS_NS_GRANULARITY = 0x16, NVME_ID_CNS_UUID_LIST = 0x17, |
329dd7681 nvme.h: add an en... |
405 406 407 |
}; enum { |
71010c309 nvme: implement m... |
408 |
NVME_CSI_NVM = 0, |
240e6ee27 nvme: support for... |
409 |
NVME_CSI_ZNS = 2, |
71010c309 nvme: implement m... |
410 411 412 |
}; enum { |
f5d118406 nvme: add support... |
413 414 415 416 417 418 419 420 421 422 423 424 425 |
NVME_DIR_IDENTIFY = 0x00, NVME_DIR_STREAMS = 0x01, NVME_DIR_SND_ID_OP_ENABLE = 0x01, NVME_DIR_SND_ST_OP_REL_ID = 0x01, NVME_DIR_SND_ST_OP_REL_RSC = 0x02, NVME_DIR_RCV_ID_OP_PARAM = 0x01, NVME_DIR_RCV_ST_OP_PARAM = 0x01, NVME_DIR_RCV_ST_OP_STATUS = 0x02, NVME_DIR_RCV_ST_OP_RESOURCE = 0x03, NVME_DIR_ENDIR = 0x01, }; enum { |
9d99a8dda nvme: move hardwa... |
426 |
NVME_NS_FEAT_THIN = 1 << 0, |
92decf118 nvme: define cons... |
427 428 429 |
NVME_NS_FEAT_ATOMICS = 1 << 1, NVME_NS_FEAT_IO_OPT = 1 << 4, NVME_NS_ATTR_RO = 1 << 0, |
9d99a8dda nvme: move hardwa... |
430 431 |
NVME_NS_FLBAS_LBA_MASK = 0xf, NVME_NS_FLBAS_META_EXT = 0x10, |
92decf118 nvme: define cons... |
432 |
NVME_NS_NMIC_SHARED = 1 << 0, |
9d99a8dda nvme: move hardwa... |
433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 |
NVME_LBAF_RP_BEST = 0, NVME_LBAF_RP_BETTER = 1, NVME_LBAF_RP_GOOD = 2, NVME_LBAF_RP_DEGRADED = 3, NVME_NS_DPC_PI_LAST = 1 << 4, NVME_NS_DPC_PI_FIRST = 1 << 3, NVME_NS_DPC_PI_TYPE3 = 1 << 2, NVME_NS_DPC_PI_TYPE2 = 1 << 1, NVME_NS_DPC_PI_TYPE1 = 1 << 0, NVME_NS_DPS_PI_FIRST = 1 << 3, NVME_NS_DPS_PI_MASK = 0x7, NVME_NS_DPS_PI_TYPE1 = 1, NVME_NS_DPS_PI_TYPE2 = 2, NVME_NS_DPS_PI_TYPE3 = 3, }; |
39481fbd1 nvme: add Metadat... |
448 449 450 451 452 |
/* Identify Namespace Metadata Capabilities (MC): */ enum { NVME_MC_EXTENDED_LBA = (1 << 0), NVME_MC_METADATA_PTR = (1 << 1), }; |
af8b86e9a nvme: introduce N... |
453 454 455 456 457 458 459 460 461 |
struct nvme_ns_id_desc { __u8 nidt; __u8 nidl; __le16 reserved; }; #define NVME_NIDT_EUI64_LEN 8 #define NVME_NIDT_NGUID_LEN 16 #define NVME_NIDT_UUID_LEN 16 |
71010c309 nvme: implement m... |
462 |
#define NVME_NIDT_CSI_LEN 1 |
af8b86e9a nvme: introduce N... |
463 464 465 466 467 |
enum { NVME_NIDT_EUI64 = 0x01, NVME_NIDT_NGUID = 0x02, NVME_NIDT_UUID = 0x03, |
71010c309 nvme: implement m... |
468 |
NVME_NIDT_CSI = 0x04, |
af8b86e9a nvme: introduce N... |
469 |
}; |
9d99a8dda nvme: move hardwa... |
470 471 472 473 474 475 |
struct nvme_smart_log { __u8 critical_warning; __u8 temperature[2]; __u8 avail_spare; __u8 spare_thresh; __u8 percent_used; |
48c9e85b2 nvme: resync incl... |
476 477 |
__u8 endu_grp_crit_warn_sumry; __u8 rsvd7[25]; |
9d99a8dda nvme: move hardwa... |
478 479 480 481 482 483 484 485 486 487 488 489 490 |
__u8 data_units_read[16]; __u8 data_units_written[16]; __u8 host_reads[16]; __u8 host_writes[16]; __u8 ctrl_busy_time[16]; __u8 power_cycles[16]; __u8 power_on_hours[16]; __u8 unsafe_shutdowns[16]; __u8 media_errors[16]; __u8 num_err_log_entries[16]; __le32 warning_temp_time; __le32 critical_comp_time; __le16 temp_sensor[8]; |
48c9e85b2 nvme: resync incl... |
491 492 493 494 495 |
__le32 thm_temp1_trans_count; __le32 thm_temp2_trans_count; __le32 thm_temp1_total_time; __le32 thm_temp2_total_time; __u8 rsvd232[280]; |
9d99a8dda nvme: move hardwa... |
496 |
}; |
b6dccf7fa nvme: add support... |
497 498 499 500 501 502 |
struct nvme_fw_slot_info_log { __u8 afi; __u8 rsvd1[7]; __le64 frs[7]; __u8 rsvd64[448]; }; |
9d99a8dda nvme: move hardwa... |
503 |
enum { |
84fef62d1 nvme: check admin... |
504 505 506 507 508 509 |
NVME_CMD_EFFECTS_CSUPP = 1 << 0, NVME_CMD_EFFECTS_LBCC = 1 << 1, NVME_CMD_EFFECTS_NCC = 1 << 2, NVME_CMD_EFFECTS_NIC = 1 << 3, NVME_CMD_EFFECTS_CCC = 1 << 4, NVME_CMD_EFFECTS_CSE_MASK = 3 << 16, |
48c9e85b2 nvme: resync incl... |
510 |
NVME_CMD_EFFECTS_UUID_SEL = 1 << 19, |
84fef62d1 nvme: check admin... |
511 512 513 514 515 516 517 |
}; struct nvme_effects_log { __le32 acs[256]; __le32 iocs[256]; __u8 resv[2048]; }; |
1a3762165 nvme.h: add ANA d... |
518 519 520 521 522 523 524 525 526 527 528 529 530 |
enum nvme_ana_state { NVME_ANA_OPTIMIZED = 0x01, NVME_ANA_NONOPTIMIZED = 0x02, NVME_ANA_INACCESSIBLE = 0x03, NVME_ANA_PERSISTENT_LOSS = 0x04, NVME_ANA_CHANGE = 0x0f, }; struct nvme_ana_group_desc { __le32 grpid; __le32 nnsids; __le64 chgcnt; __u8 state; |
8b92d0e3d nvme.h: fixup ANA... |
531 |
__u8 rsvd17[15]; |
1a3762165 nvme.h: add ANA d... |
532 533 534 535 536 537 538 539 540 541 542 |
__le32 nsids[]; }; /* flag for the log specific field of the ANA log */ #define NVME_ANA_LOG_RGO (1 << 0) struct nvme_ana_rsp_hdr { __le64 chgcnt; __le16 ngrps; __le16 rsvd10[3]; }; |
240e6ee27 nvme: support for... |
543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 |
struct nvme_zone_descriptor { __u8 zt; __u8 zs; __u8 za; __u8 rsvd3[5]; __le64 zcap; __le64 zslba; __le64 wp; __u8 rsvd32[32]; }; enum { NVME_ZONE_TYPE_SEQWRITE_REQ = 0x2, }; struct nvme_zone_report { __le64 nr_zones; __u8 resv8[56]; struct nvme_zone_descriptor entries[]; }; |
84fef62d1 nvme: check admin... |
563 |
enum { |
9d99a8dda nvme: move hardwa... |
564 565 566 567 568 569 570 571 |
NVME_SMART_CRIT_SPARE = 1 << 0, NVME_SMART_CRIT_TEMPERATURE = 1 << 1, NVME_SMART_CRIT_RELIABILITY = 1 << 2, NVME_SMART_CRIT_MEDIA = 1 << 3, NVME_SMART_CRIT_VOLATILE_MEMORY = 1 << 4, }; enum { |
e3d7874dc nvme: send uevent... |
572 573 |
NVME_AER_ERROR = 0, NVME_AER_SMART = 1, |
868c2392a nvme.h: untangle ... |
574 |
NVME_AER_NOTICE = 2, |
e3d7874dc nvme: send uevent... |
575 576 |
NVME_AER_CSS = 6, NVME_AER_VS = 7, |
868c2392a nvme.h: untangle ... |
577 578 579 580 581 |
}; enum { NVME_AER_NOTICE_NS_CHANGED = 0x00, NVME_AER_NOTICE_FW_ACT_STARTING = 0x01, |
1a3762165 nvme.h: add ANA d... |
582 |
NVME_AER_NOTICE_ANA = 0x03, |
f301c2b13 nvmet: add define... |
583 |
NVME_AER_NOTICE_DISC_CHANGED = 0xf0, |
9d99a8dda nvme: move hardwa... |
584 |
}; |
aafd3afe9 nvme.h: add AEN c... |
585 |
enum { |
7114ddeb4 nvmet: change aen... |
586 587 588 |
NVME_AEN_BIT_NS_ATTR = 8, NVME_AEN_BIT_FW_ACT = 9, NVME_AEN_BIT_ANA_CHANGE = 11, |
f301c2b13 nvmet: add define... |
589 |
NVME_AEN_BIT_DISC_CHANGE = 31, |
7114ddeb4 nvmet: change aen... |
590 591 592 593 594 595 |
}; enum { NVME_AEN_CFG_NS_ATTR = 1 << NVME_AEN_BIT_NS_ATTR, NVME_AEN_CFG_FW_ACT = 1 << NVME_AEN_BIT_FW_ACT, NVME_AEN_CFG_ANA_CHANGE = 1 << NVME_AEN_BIT_ANA_CHANGE, |
f301c2b13 nvmet: add define... |
596 |
NVME_AEN_CFG_DISC_CHANGE = 1 << NVME_AEN_BIT_DISC_CHANGE, |
aafd3afe9 nvme.h: add AEN c... |
597 |
}; |
9d99a8dda nvme: move hardwa... |
598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 |
struct nvme_lba_range_type { __u8 type; __u8 attributes; __u8 rsvd2[14]; __u64 slba; __u64 nlb; __u8 guid[16]; __u8 rsvd48[16]; }; enum { NVME_LBART_TYPE_FS = 0x01, NVME_LBART_TYPE_RAID = 0x02, NVME_LBART_TYPE_CACHE = 0x03, NVME_LBART_TYPE_SWAP = 0x04, NVME_LBART_ATTRIB_TEMP = 1 << 0, NVME_LBART_ATTRIB_HIDE = 1 << 1, }; struct nvme_reservation_status { __le32 gen; __u8 rtype; __u8 regctl[2]; __u8 resv5[2]; __u8 ptpls; __u8 resv10[13]; struct { __le16 cntlid; __u8 rcsts; __u8 resv3[5]; __le64 hostid; __le64 rkey; } regctl_ds[]; }; |
79f370eac nvme.h: add AER c... |
633 634 635 636 637 |
enum nvme_async_event_type { NVME_AER_TYPE_ERROR = 0, NVME_AER_TYPE_SMART = 1, NVME_AER_TYPE_NOTICE = 2, }; |
9d99a8dda nvme: move hardwa... |
638 639 640 641 642 643 644 645 646 647 |
/* I/O commands */ enum nvme_opcode { nvme_cmd_flush = 0x00, nvme_cmd_write = 0x01, nvme_cmd_read = 0x02, nvme_cmd_write_uncor = 0x04, nvme_cmd_compare = 0x05, nvme_cmd_write_zeroes = 0x08, nvme_cmd_dsm = 0x09, |
48c9e85b2 nvme: resync incl... |
648 |
nvme_cmd_verify = 0x0c, |
9d99a8dda nvme: move hardwa... |
649 650 651 652 |
nvme_cmd_resv_register = 0x0d, nvme_cmd_resv_report = 0x0e, nvme_cmd_resv_acquire = 0x11, nvme_cmd_resv_release = 0x15, |
240e6ee27 nvme: support for... |
653 654 655 |
nvme_cmd_zone_mgmt_send = 0x79, nvme_cmd_zone_mgmt_recv = 0x7a, nvme_cmd_zone_append = 0x7d, |
9d99a8dda nvme: move hardwa... |
656 |
}; |
26f2990d8 nvme-trace: move ... |
657 658 659 660 661 662 663 664 665 666 667 668 669 670 |
#define nvme_opcode_name(opcode) { opcode, #opcode } #define show_nvm_opcode_name(val) \ __print_symbolic(val, \ nvme_opcode_name(nvme_cmd_flush), \ nvme_opcode_name(nvme_cmd_write), \ nvme_opcode_name(nvme_cmd_read), \ nvme_opcode_name(nvme_cmd_write_uncor), \ nvme_opcode_name(nvme_cmd_compare), \ nvme_opcode_name(nvme_cmd_write_zeroes), \ nvme_opcode_name(nvme_cmd_dsm), \ nvme_opcode_name(nvme_cmd_resv_register), \ nvme_opcode_name(nvme_cmd_resv_report), \ nvme_opcode_name(nvme_cmd_resv_acquire), \ nvme_opcode_name(nvme_cmd_resv_release)) |
3972be23b nvme.h: add const... |
671 |
/* |
eb793e2c9 nvme.h: add NVMe ... |
672 673 674 675 |
* Descriptor subtype - lower 4 bits of nvme_(keyed_)sgl_desc identifier * * @NVME_SGL_FMT_ADDRESS: absolute address of the data block * @NVME_SGL_FMT_OFFSET: relative offset of the in-capsule data block |
d85cf2074 nvme: add transpo... |
676 |
* @NVME_SGL_FMT_TRANSPORT_A: transport defined format, value 0xA |
eb793e2c9 nvme.h: add NVMe ... |
677 678 679 680 681 682 |
* @NVME_SGL_FMT_INVALIDATE: RDMA transport specific remote invalidation * request subtype */ enum { NVME_SGL_FMT_ADDRESS = 0x00, NVME_SGL_FMT_OFFSET = 0x01, |
d85cf2074 nvme: add transpo... |
683 |
NVME_SGL_FMT_TRANSPORT_A = 0x0A, |
eb793e2c9 nvme.h: add NVMe ... |
684 685 686 687 688 689 690 691 692 693 694 695 696 |
NVME_SGL_FMT_INVALIDATE = 0x0f, }; /* * Descriptor type - upper 4 bits of nvme_(keyed_)sgl_desc identifier * * For struct nvme_sgl_desc: * @NVME_SGL_FMT_DATA_DESC: data block descriptor * @NVME_SGL_FMT_SEG_DESC: sgl segment descriptor * @NVME_SGL_FMT_LAST_SEG_DESC: last sgl segment descriptor * * For struct nvme_keyed_sgl_desc: * @NVME_KEY_SGL_FMT_DATA_DESC: keyed data block descriptor |
d85cf2074 nvme: add transpo... |
697 698 699 |
* * Transport-specific SGL types: * @NVME_TRANSPORT_SGL_DATA_DESC: Transport SGL data dlock descriptor |
eb793e2c9 nvme.h: add NVMe ... |
700 701 702 703 704 705 |
*/ enum { NVME_SGL_FMT_DATA_DESC = 0x00, NVME_SGL_FMT_SEG_DESC = 0x02, NVME_SGL_FMT_LAST_SEG_DESC = 0x03, NVME_KEY_SGL_FMT_DATA_DESC = 0x04, |
d85cf2074 nvme: add transpo... |
706 |
NVME_TRANSPORT_SGL_DATA_DESC = 0x05, |
eb793e2c9 nvme.h: add NVMe ... |
707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 |
}; struct nvme_sgl_desc { __le64 addr; __le32 length; __u8 rsvd[3]; __u8 type; }; struct nvme_keyed_sgl_desc { __le64 addr; __u8 length[3]; __u8 key[4]; __u8 type; }; union nvme_data_ptr { struct { __le64 prp1; __le64 prp2; }; struct nvme_sgl_desc sgl; struct nvme_keyed_sgl_desc ksgl; }; /* |
3972be23b nvme.h: add const... |
733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 |
* Lowest two bits of our flags field (FUSE field in the spec): * * @NVME_CMD_FUSE_FIRST: Fused Operation, first command * @NVME_CMD_FUSE_SECOND: Fused Operation, second command * * Highest two bits in our flags field (PSDT field in the spec): * * @NVME_CMD_PSDT_SGL_METABUF: Use SGLS for this transfer, * If used, MPTR contains addr of single physical buffer (byte aligned). * @NVME_CMD_PSDT_SGL_METASEG: Use SGLS for this transfer, * If used, MPTR contains an address of an SGL segment containing * exactly 1 SGL descriptor (qword aligned). */ enum { NVME_CMD_FUSE_FIRST = (1 << 0), NVME_CMD_FUSE_SECOND = (1 << 1), NVME_CMD_SGL_METABUF = (1 << 6), NVME_CMD_SGL_METASEG = (1 << 7), NVME_CMD_SGL_ALL = NVME_CMD_SGL_METABUF | NVME_CMD_SGL_METASEG, }; |
9d99a8dda nvme: move hardwa... |
754 755 756 757 758 759 760 |
struct nvme_common_command { __u8 opcode; __u8 flags; __u16 command_id; __le32 nsid; __le32 cdw2[2]; __le64 metadata; |
eb793e2c9 nvme.h: add NVMe ... |
761 |
union nvme_data_ptr dptr; |
b7c8f3663 nvme: remove nvme... |
762 763 764 765 766 767 |
__le32 cdw10; __le32 cdw11; __le32 cdw12; __le32 cdw13; __le32 cdw14; __le32 cdw15; |
9d99a8dda nvme: move hardwa... |
768 769 770 771 772 773 774 775 776 |
}; struct nvme_rw_command { __u8 opcode; __u8 flags; __u16 command_id; __le32 nsid; __u64 rsvd2; __le64 metadata; |
eb793e2c9 nvme.h: add NVMe ... |
777 |
union nvme_data_ptr dptr; |
9d99a8dda nvme: move hardwa... |
778 779 780 781 782 783 784 785 786 787 788 789 |
__le64 slba; __le16 length; __le16 control; __le32 dsmgmt; __le32 reftag; __le16 apptag; __le16 appmask; }; enum { NVME_RW_LR = 1 << 15, NVME_RW_FUA = 1 << 14, |
240e6ee27 nvme: support for... |
790 |
NVME_RW_APPEND_PIREMAP = 1 << 9, |
9d99a8dda nvme: move hardwa... |
791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 |
NVME_RW_DSM_FREQ_UNSPEC = 0, NVME_RW_DSM_FREQ_TYPICAL = 1, NVME_RW_DSM_FREQ_RARE = 2, NVME_RW_DSM_FREQ_READS = 3, NVME_RW_DSM_FREQ_WRITES = 4, NVME_RW_DSM_FREQ_RW = 5, NVME_RW_DSM_FREQ_ONCE = 6, NVME_RW_DSM_FREQ_PREFETCH = 7, NVME_RW_DSM_FREQ_TEMP = 8, NVME_RW_DSM_LATENCY_NONE = 0 << 4, NVME_RW_DSM_LATENCY_IDLE = 1 << 4, NVME_RW_DSM_LATENCY_NORM = 2 << 4, NVME_RW_DSM_LATENCY_LOW = 3 << 4, NVME_RW_DSM_SEQ_REQ = 1 << 6, NVME_RW_DSM_COMPRESSED = 1 << 7, NVME_RW_PRINFO_PRCHK_REF = 1 << 10, NVME_RW_PRINFO_PRCHK_APP = 1 << 11, NVME_RW_PRINFO_PRCHK_GUARD = 1 << 12, NVME_RW_PRINFO_PRACT = 1 << 13, |
f5d118406 nvme: add support... |
810 |
NVME_RW_DTYPE_STREAMS = 1 << 4, |
9d99a8dda nvme: move hardwa... |
811 812 813 814 815 816 817 818 |
}; struct nvme_dsm_cmd { __u8 opcode; __u8 flags; __u16 command_id; __le32 nsid; __u64 rsvd2[2]; |
eb793e2c9 nvme.h: add NVMe ... |
819 |
union nvme_data_ptr dptr; |
9d99a8dda nvme: move hardwa... |
820 821 822 823 824 825 826 827 828 829 |
__le32 nr; __le32 attributes; __u32 rsvd12[4]; }; enum { NVME_DSMGMT_IDR = 1 << 0, NVME_DSMGMT_IDW = 1 << 1, NVME_DSMGMT_AD = 1 << 2, }; |
b35ba01ea nvme: support ran... |
830 |
#define NVME_DSM_MAX_RANGES 256 |
9d99a8dda nvme: move hardwa... |
831 832 833 834 835 |
struct nvme_dsm_range { __le32 cattr; __le32 nlb; __le64 slba; }; |
3b7c33b28 nvme.h: add Write... |
836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 |
struct nvme_write_zeroes_cmd { __u8 opcode; __u8 flags; __u16 command_id; __le32 nsid; __u64 rsvd2; __le64 metadata; union nvme_data_ptr dptr; __le64 slba; __le16 length; __le16 control; __le32 dsmgmt; __le32 reftag; __le16 apptag; __le16 appmask; }; |
240e6ee27 nvme: support for... |
852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 |
enum nvme_zone_mgmt_action { NVME_ZONE_CLOSE = 0x1, NVME_ZONE_FINISH = 0x2, NVME_ZONE_OPEN = 0x3, NVME_ZONE_RESET = 0x4, NVME_ZONE_OFFLINE = 0x5, NVME_ZONE_SET_DESC_EXT = 0x10, }; struct nvme_zone_mgmt_send_cmd { __u8 opcode; __u8 flags; __u16 command_id; __le32 nsid; __le32 cdw2[2]; __le64 metadata; union nvme_data_ptr dptr; __le64 slba; __le32 cdw12; __u8 zsa; __u8 select_all; __u8 rsvd13[2]; __le32 cdw14[2]; }; struct nvme_zone_mgmt_recv_cmd { __u8 opcode; __u8 flags; __u16 command_id; __le32 nsid; __le64 rsvd2[2]; union nvme_data_ptr dptr; __le64 slba; __le32 numd; __u8 zra; __u8 zrasf; __u8 pr; __u8 rsvd13; __le32 cdw14[2]; }; enum { NVME_ZRA_ZONE_REPORT = 0, NVME_ZRASF_ZONE_REPORT_ALL = 0, NVME_REPORT_ZONE_PARTIAL = 1, }; |
c5552fde1 nvme: Enable auto... |
898 |
/* Features */ |
52deba0f0 nvme: hwmon: prov... |
899 900 901 902 903 |
enum { NVME_TEMP_THRESH_MASK = 0xffff, NVME_TEMP_THRESH_SELECT_SHIFT = 16, NVME_TEMP_THRESH_TYPE_UNDER = 0x100000, }; |
c5552fde1 nvme: Enable auto... |
904 905 906 |
struct nvme_feat_auto_pst { __le64 entries[32]; }; |
39673e199 nvme.h: add struc... |
907 908 909 910 |
enum { NVME_HOST_MEM_ENABLE = (1 << 0), NVME_HOST_MEM_RETURN = (1 << 1), }; |
49cd84b6f nvme: implement E... |
911 912 913 914 915 916 917 918 |
struct nvme_feat_host_behavior { __u8 acre; __u8 resv1[511]; }; enum { NVME_ENABLE_ACRE = 1, }; |
9d99a8dda nvme: move hardwa... |
919 920 921 922 923 924 925 926 927 928 929 930 931 |
/* Admin commands */ enum nvme_admin_opcode { nvme_admin_delete_sq = 0x00, nvme_admin_create_sq = 0x01, nvme_admin_get_log_page = 0x02, nvme_admin_delete_cq = 0x04, nvme_admin_create_cq = 0x05, nvme_admin_identify = 0x06, nvme_admin_abort_cmd = 0x08, nvme_admin_set_features = 0x09, nvme_admin_get_features = 0x0a, nvme_admin_async_event = 0x0c, |
a446c0840 nvme.h: resync wi... |
932 |
nvme_admin_ns_mgmt = 0x0d, |
9d99a8dda nvme: move hardwa... |
933 934 |
nvme_admin_activate_fw = 0x10, nvme_admin_download_fw = 0x11, |
48c9e85b2 nvme: resync incl... |
935 |
nvme_admin_dev_self_test = 0x14, |
a446c0840 nvme.h: resync wi... |
936 |
nvme_admin_ns_attach = 0x15, |
7b89eae29 nvme.h: Add keep-... |
937 |
nvme_admin_keep_alive = 0x18, |
f5d118406 nvme: add support... |
938 939 |
nvme_admin_directive_send = 0x19, nvme_admin_directive_recv = 0x1a, |
48c9e85b2 nvme: resync incl... |
940 941 942 |
nvme_admin_virtual_mgmt = 0x1c, nvme_admin_nvme_mi_send = 0x1d, nvme_admin_nvme_mi_recv = 0x1e, |
f9f38e333 nvme: improve per... |
943 |
nvme_admin_dbbuf = 0x7C, |
9d99a8dda nvme: move hardwa... |
944 945 946 |
nvme_admin_format_nvm = 0x80, nvme_admin_security_send = 0x81, nvme_admin_security_recv = 0x82, |
84fef62d1 nvme: check admin... |
947 |
nvme_admin_sanitize_nvm = 0x84, |
c63898452 nvme: add Get LBA... |
948 |
nvme_admin_get_lba_status = 0x86, |
c1fef73f7 nvmet: add passth... |
949 |
nvme_admin_vendor_start = 0xC0, |
9d99a8dda nvme: move hardwa... |
950 |
}; |
26f2990d8 nvme-trace: move ... |
951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 |
#define nvme_admin_opcode_name(opcode) { opcode, #opcode } #define show_admin_opcode_name(val) \ __print_symbolic(val, \ nvme_admin_opcode_name(nvme_admin_delete_sq), \ nvme_admin_opcode_name(nvme_admin_create_sq), \ nvme_admin_opcode_name(nvme_admin_get_log_page), \ nvme_admin_opcode_name(nvme_admin_delete_cq), \ nvme_admin_opcode_name(nvme_admin_create_cq), \ nvme_admin_opcode_name(nvme_admin_identify), \ nvme_admin_opcode_name(nvme_admin_abort_cmd), \ nvme_admin_opcode_name(nvme_admin_set_features), \ nvme_admin_opcode_name(nvme_admin_get_features), \ nvme_admin_opcode_name(nvme_admin_async_event), \ nvme_admin_opcode_name(nvme_admin_ns_mgmt), \ nvme_admin_opcode_name(nvme_admin_activate_fw), \ nvme_admin_opcode_name(nvme_admin_download_fw), \ nvme_admin_opcode_name(nvme_admin_ns_attach), \ nvme_admin_opcode_name(nvme_admin_keep_alive), \ nvme_admin_opcode_name(nvme_admin_directive_send), \ nvme_admin_opcode_name(nvme_admin_directive_recv), \ nvme_admin_opcode_name(nvme_admin_dbbuf), \ nvme_admin_opcode_name(nvme_admin_format_nvm), \ nvme_admin_opcode_name(nvme_admin_security_send), \ nvme_admin_opcode_name(nvme_admin_security_recv), \ |
a5ef75720 nvme: trace: supp... |
975 976 |
nvme_admin_opcode_name(nvme_admin_sanitize_nvm), \ nvme_admin_opcode_name(nvme_admin_get_lba_status)) |
26f2990d8 nvme-trace: move ... |
977 |
|
9d99a8dda nvme: move hardwa... |
978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 |
enum { NVME_QUEUE_PHYS_CONTIG = (1 << 0), NVME_CQ_IRQ_ENABLED = (1 << 1), NVME_SQ_PRIO_URGENT = (0 << 1), NVME_SQ_PRIO_HIGH = (1 << 1), NVME_SQ_PRIO_MEDIUM = (2 << 1), NVME_SQ_PRIO_LOW = (3 << 1), NVME_FEAT_ARBITRATION = 0x01, NVME_FEAT_POWER_MGMT = 0x02, NVME_FEAT_LBA_RANGE = 0x03, NVME_FEAT_TEMP_THRESH = 0x04, NVME_FEAT_ERR_RECOVERY = 0x05, NVME_FEAT_VOLATILE_WC = 0x06, NVME_FEAT_NUM_QUEUES = 0x07, NVME_FEAT_IRQ_COALESCE = 0x08, NVME_FEAT_IRQ_CONFIG = 0x09, NVME_FEAT_WRITE_ATOMIC = 0x0a, NVME_FEAT_ASYNC_EVENT = 0x0b, NVME_FEAT_AUTO_PST = 0x0c, |
a446c0840 nvme.h: resync wi... |
997 |
NVME_FEAT_HOST_MEM_BUF = 0x0d, |
dbf86b390 nvme: add support... |
998 |
NVME_FEAT_TIMESTAMP = 0x0e, |
7b89eae29 nvme.h: Add keep-... |
999 |
NVME_FEAT_KATO = 0x0f, |
40c6f9c28 nvme.h: resync wi... |
1000 1001 1002 1003 1004 |
NVME_FEAT_HCTM = 0x10, NVME_FEAT_NOPSC = 0x11, NVME_FEAT_RRL = 0x12, NVME_FEAT_PLM_CONFIG = 0x13, NVME_FEAT_PLM_WINDOW = 0x14, |
49cd84b6f nvme: implement E... |
1005 |
NVME_FEAT_HOST_BEHAVIOR = 0x16, |
48c9e85b2 nvme: resync incl... |
1006 |
NVME_FEAT_SANITIZE = 0x17, |
9d99a8dda nvme: move hardwa... |
1007 1008 1009 1010 |
NVME_FEAT_SW_PROGRESS = 0x80, NVME_FEAT_HOST_ID = 0x81, NVME_FEAT_RESV_MASK = 0x82, NVME_FEAT_RESV_PERSIST = 0x83, |
93045d594 nvme.h: add suppo... |
1011 |
NVME_FEAT_WRITE_PROTECT = 0x84, |
c1fef73f7 nvmet: add passth... |
1012 1013 |
NVME_FEAT_VENDOR_START = 0xC0, NVME_FEAT_VENDOR_END = 0xFF, |
9d99a8dda nvme: move hardwa... |
1014 1015 1016 |
NVME_LOG_ERROR = 0x01, NVME_LOG_SMART = 0x02, NVME_LOG_FW_SLOT = 0x03, |
b3984e064 nvme.h: add the c... |
1017 |
NVME_LOG_CHANGED_NS = 0x04, |
84fef62d1 nvme: check admin... |
1018 |
NVME_LOG_CMD_EFFECTS = 0x05, |
48c9e85b2 nvme: resync incl... |
1019 1020 1021 1022 |
NVME_LOG_DEVICE_SELF_TEST = 0x06, NVME_LOG_TELEMETRY_HOST = 0x07, NVME_LOG_TELEMETRY_CTRL = 0x08, NVME_LOG_ENDURANCE_GROUP = 0x09, |
1a3762165 nvme.h: add ANA d... |
1023 |
NVME_LOG_ANA = 0x0c, |
eb793e2c9 nvme.h: add NVMe ... |
1024 |
NVME_LOG_DISC = 0x70, |
9d99a8dda nvme: move hardwa... |
1025 1026 1027 1028 1029 |
NVME_LOG_RESERVATION = 0x80, NVME_FWACT_REPL = (0 << 3), NVME_FWACT_REPL_ACTV = (1 << 3), NVME_FWACT_ACTV = (2 << 3), }; |
93045d594 nvme.h: add suppo... |
1030 1031 1032 1033 1034 1035 1036 |
/* NVMe Namespace Write Protect State */ enum { NVME_NS_NO_WRITE_PROTECT = 0, NVME_NS_WRITE_PROTECT, NVME_NS_WRITE_PROTECT_POWER_CYCLE, NVME_NS_WRITE_PROTECT_PERMANENT, }; |
b3984e064 nvme.h: add the c... |
1037 |
#define NVME_MAX_CHANGED_NAMESPACES 1024 |
9d99a8dda nvme: move hardwa... |
1038 1039 1040 1041 1042 1043 |
struct nvme_identify { __u8 opcode; __u8 flags; __u16 command_id; __le32 nsid; __u64 rsvd2[2]; |
eb793e2c9 nvme.h: add NVMe ... |
1044 |
union nvme_data_ptr dptr; |
986994a27 nvme: Use CNS as ... |
1045 1046 1047 |
__u8 cns; __u8 rsvd3; __le16 ctrlid; |
71010c309 nvme: implement m... |
1048 1049 1050 |
__u8 rsvd11[3]; __u8 csi; __u32 rsvd12[4]; |
9d99a8dda nvme: move hardwa... |
1051 |
}; |
0add5e8e5 nvmet: use NVME_I... |
1052 |
#define NVME_IDENTIFY_DATA_SIZE 4096 |
9d99a8dda nvme: move hardwa... |
1053 1054 1055 1056 1057 1058 |
struct nvme_features { __u8 opcode; __u8 flags; __u16 command_id; __le32 nsid; __u64 rsvd2[2]; |
eb793e2c9 nvme.h: add NVMe ... |
1059 |
union nvme_data_ptr dptr; |
9d99a8dda nvme: move hardwa... |
1060 1061 |
__le32 fid; __le32 dword11; |
b85cf7348 nvme.h: add dword... |
1062 1063 1064 1065 |
__le32 dword12; __le32 dword13; __le32 dword14; __le32 dword15; |
9d99a8dda nvme: move hardwa... |
1066 |
}; |
39673e199 nvme.h: add struc... |
1067 1068 1069 1070 1071 |
struct nvme_host_mem_buf_desc { __le64 addr; __le32 size; __u32 rsvd; }; |
9d99a8dda nvme: move hardwa... |
1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 |
struct nvme_create_cq { __u8 opcode; __u8 flags; __u16 command_id; __u32 rsvd1[5]; __le64 prp1; __u64 rsvd8; __le16 cqid; __le16 qsize; __le16 cq_flags; __le16 irq_vector; __u32 rsvd12[4]; }; struct nvme_create_sq { __u8 opcode; __u8 flags; __u16 command_id; __u32 rsvd1[5]; __le64 prp1; __u64 rsvd8; __le16 sqid; __le16 qsize; __le16 sq_flags; __le16 cqid; __u32 rsvd12[4]; }; struct nvme_delete_queue { __u8 opcode; __u8 flags; __u16 command_id; __u32 rsvd1[9]; __le16 qid; __u16 rsvd10; __u32 rsvd11[5]; }; struct nvme_abort_cmd { __u8 opcode; __u8 flags; __u16 command_id; __u32 rsvd1[9]; __le16 sqid; __u16 cid; __u32 rsvd11[5]; }; struct nvme_download_firmware { __u8 opcode; __u8 flags; __u16 command_id; __u32 rsvd1[5]; |
eb793e2c9 nvme.h: add NVMe ... |
1125 |
union nvme_data_ptr dptr; |
9d99a8dda nvme: move hardwa... |
1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 |
__le32 numd; __le32 offset; __u32 rsvd12[4]; }; struct nvme_format_cmd { __u8 opcode; __u8 flags; __u16 command_id; __le32 nsid; __u64 rsvd2[4]; __le32 cdw10; __u32 rsvd11[5]; }; |
725b35883 nvme.h: Add get_l... |
1140 1141 1142 1143 1144 1145 |
struct nvme_get_log_page_command { __u8 opcode; __u8 flags; __u16 command_id; __le32 nsid; __u64 rsvd2[2]; |
eb793e2c9 nvme.h: add NVMe ... |
1146 |
union nvme_data_ptr dptr; |
725b35883 nvme.h: Add get_l... |
1147 |
__u8 lid; |
9b89bc385 nvme.h: add suppo... |
1148 |
__u8 lsp; /* upper 4 bits reserved */ |
725b35883 nvme.h: Add get_l... |
1149 1150 1151 |
__le16 numdl; __le16 numdu; __u16 rsvd11; |
d808b7f75 nvmet: fix discov... |
1152 1153 1154 1155 1156 1157 1158 |
union { struct { __le32 lpol; __le32 lpou; }; __le64 lpo; }; |
be93e87e7 nvme: support for... |
1159 1160 1161 |
__u8 rsvd14[3]; __u8 csi; __u32 rsvd15; |
725b35883 nvme.h: Add get_l... |
1162 |
}; |
f5d118406 nvme: add support... |
1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 |
struct nvme_directive_cmd { __u8 opcode; __u8 flags; __u16 command_id; __le32 nsid; __u64 rsvd2[2]; union nvme_data_ptr dptr; __le32 numd; __u8 doper; __u8 dtype; __le16 dspec; __u8 endir; __u8 tdtype; __u16 rsvd15; __u32 rsvd16[3]; }; |
eb793e2c9 nvme.h: add NVMe ... |
1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 |
/* * Fabrics subcommands. */ enum nvmf_fabrics_opcode { nvme_fabrics_command = 0x7f, }; enum nvmf_capsule_command { nvme_fabrics_type_property_set = 0x00, nvme_fabrics_type_connect = 0x01, nvme_fabrics_type_property_get = 0x04, }; |
ad795e47c nvme-trace: suppo... |
1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 |
#define nvme_fabrics_type_name(type) { type, #type } #define show_fabrics_type_name(type) \ __print_symbolic(type, \ nvme_fabrics_type_name(nvme_fabrics_type_property_set), \ nvme_fabrics_type_name(nvme_fabrics_type_connect), \ nvme_fabrics_type_name(nvme_fabrics_type_property_get)) /* * If not fabrics command, fctype will be ignored. */ #define show_opcode_name(qid, opcode, fctype) \ ((opcode) == nvme_fabrics_command ? \ show_fabrics_type_name(fctype) : \ ((qid) ? \ show_nvm_opcode_name(opcode) : \ show_admin_opcode_name(opcode))) |
eb793e2c9 nvme.h: add NVMe ... |
1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 |
struct nvmf_common_command { __u8 opcode; __u8 resv1; __u16 command_id; __u8 fctype; __u8 resv2[35]; __u8 ts[24]; }; /* * The legal cntlid range a NVMe Target will provide. * Note that cntlid of value 0 is considered illegal in the fabrics world. * Devices based on earlier specs did not have the subsystem concept; * therefore, those devices had their cntlid value set to 0 as a result. */ #define NVME_CNTLID_MIN 1 #define NVME_CNTLID_MAX 0xffef #define NVME_CNTLID_DYNAMIC 0xffff #define MAX_DISC_LOGS 255 /* Discovery log page entry */ struct nvmf_disc_rsp_page_entry { __u8 trtype; __u8 adrfam; |
a446c0840 nvme.h: resync wi... |
1233 |
__u8 subtype; |
eb793e2c9 nvme.h: add NVMe ... |
1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 |
__u8 treq; __le16 portid; __le16 cntlid; __le16 asqsz; __u8 resv8[22]; char trsvcid[NVMF_TRSVCID_SIZE]; __u8 resv64[192]; char subnqn[NVMF_NQN_FIELD_LEN]; char traddr[NVMF_TRADDR_SIZE]; union tsas { char common[NVMF_TSAS_SIZE]; struct rdma { __u8 qptype; __u8 prtype; __u8 cms; __u8 resv3[5]; __u16 pkey; __u8 resv10[246]; } rdma; } tsas; }; /* Discovery log page header */ struct nvmf_disc_rsp_page_hdr { __le64 genctr; __le64 numrec; __le16 recfmt; __u8 resv14[1006]; |
f1e71d75f nvme: replace zer... |
1262 |
struct nvmf_disc_rsp_page_entry entries[]; |
eb793e2c9 nvme.h: add NVMe ... |
1263 |
}; |
e6a622fd6 nvmet: support fa... |
1264 1265 1266 |
enum { NVME_CONNECT_DISABLE_SQFLOW = (1 << 2), }; |
eb793e2c9 nvme.h: add NVMe ... |
1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 |
struct nvmf_connect_command { __u8 opcode; __u8 resv1; __u16 command_id; __u8 fctype; __u8 resv2[19]; union nvme_data_ptr dptr; __le16 recfmt; __le16 qid; __le16 sqsize; __u8 cattr; __u8 resv3; __le32 kato; __u8 resv4[12]; }; struct nvmf_connect_data { |
8e4122632 nvme: switch to u... |
1284 |
uuid_t hostid; |
eb793e2c9 nvme.h: add NVMe ... |
1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 |
__le16 cntlid; char resv4[238]; char subsysnqn[NVMF_NQN_FIELD_LEN]; char hostnqn[NVMF_NQN_FIELD_LEN]; char resv5[256]; }; struct nvmf_property_set_command { __u8 opcode; __u8 resv1; __u16 command_id; __u8 fctype; __u8 resv2[35]; __u8 attrib; __u8 resv3[3]; __le32 offset; __le64 value; __u8 resv4[8]; }; struct nvmf_property_get_command { __u8 opcode; __u8 resv1; __u16 command_id; __u8 fctype; __u8 resv2[35]; __u8 attrib; __u8 resv3[3]; __le32 offset; __u8 resv4[16]; }; |
f9f38e333 nvme: improve per... |
1316 1317 1318 1319 1320 1321 1322 1323 1324 |
struct nvme_dbbuf { __u8 opcode; __u8 flags; __u16 command_id; __u32 rsvd1[5]; __le64 prp1; __le64 prp2; __u32 rsvd12[6]; }; |
f5d118406 nvme: add support... |
1325 |
struct streams_directive_params { |
dc1a0afba nvme: fix byte sw... |
1326 1327 1328 |
__le16 msl; __le16 nssa; __le16 nsso; |
f5d118406 nvme: add support... |
1329 |
__u8 rsvd[10]; |
dc1a0afba nvme: fix byte sw... |
1330 1331 1332 1333 |
__le32 sws; __le16 sgs; __le16 nsa; __le16 nso; |
f5d118406 nvme: add support... |
1334 1335 |
__u8 rsvd2[6]; }; |
9d99a8dda nvme: move hardwa... |
1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 |
struct nvme_command { union { struct nvme_common_command common; struct nvme_rw_command rw; struct nvme_identify identify; struct nvme_features features; struct nvme_create_cq create_cq; struct nvme_create_sq create_sq; struct nvme_delete_queue delete_queue; struct nvme_download_firmware dlfw; struct nvme_format_cmd format; struct nvme_dsm_cmd dsm; |
3b7c33b28 nvme.h: add Write... |
1348 |
struct nvme_write_zeroes_cmd write_zeroes; |
240e6ee27 nvme: support for... |
1349 1350 |
struct nvme_zone_mgmt_send_cmd zms; struct nvme_zone_mgmt_recv_cmd zmr; |
9d99a8dda nvme: move hardwa... |
1351 |
struct nvme_abort_cmd abort; |
725b35883 nvme.h: Add get_l... |
1352 |
struct nvme_get_log_page_command get_log_page; |
eb793e2c9 nvme.h: add NVMe ... |
1353 1354 1355 1356 |
struct nvmf_common_command fabrics; struct nvmf_connect_command connect; struct nvmf_property_set_command prop_set; struct nvmf_property_get_command prop_get; |
f9f38e333 nvme: improve per... |
1357 |
struct nvme_dbbuf dbbuf; |
f5d118406 nvme: add support... |
1358 |
struct nvme_directive_cmd directive; |
9d99a8dda nvme: move hardwa... |
1359 1360 |
}; }; |
7a1f46e3f nvme: introduce n... |
1361 1362 1363 1364 |
static inline bool nvme_is_fabrics(struct nvme_command *cmd) { return cmd->common.opcode == nvme_fabrics_command; } |
b34de7cee nvme: add error l... |
1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 |
struct nvme_error_slot { __le64 error_count; __le16 sqid; __le16 cmdid; __le16 status_field; __le16 param_error_location; __le64 lba; __le32 nsid; __u8 vs; __u8 resv[3]; __le64 cs; __u8 resv2[24]; }; |
7a5abb4b4 nvme: factor out ... |
1378 1379 |
static inline bool nvme_is_write(struct nvme_command *cmd) { |
eb793e2c9 nvme.h: add NVMe ... |
1380 1381 1382 1383 1384 |
/* * What a mess... * * Why can't we simply have a Fabrics In and Fabrics out command? */ |
7a1f46e3f nvme: introduce n... |
1385 |
if (unlikely(nvme_is_fabrics(cmd))) |
2fd4167fa nvme: fabrics com... |
1386 |
return cmd->fabrics.fctype & 1; |
7a5abb4b4 nvme: factor out ... |
1387 1388 |
return cmd->common.opcode & 1; } |
9d99a8dda nvme: move hardwa... |
1389 |
enum { |
eb793e2c9 nvme.h: add NVMe ... |
1390 1391 1392 |
/* * Generic Command Status: */ |
9d99a8dda nvme: move hardwa... |
1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 |
NVME_SC_SUCCESS = 0x0, NVME_SC_INVALID_OPCODE = 0x1, NVME_SC_INVALID_FIELD = 0x2, NVME_SC_CMDID_CONFLICT = 0x3, NVME_SC_DATA_XFER_ERROR = 0x4, NVME_SC_POWER_LOSS = 0x5, NVME_SC_INTERNAL = 0x6, NVME_SC_ABORT_REQ = 0x7, NVME_SC_ABORT_QUEUE = 0x8, NVME_SC_FUSED_FAIL = 0x9, NVME_SC_FUSED_MISSING = 0xa, NVME_SC_INVALID_NS = 0xb, NVME_SC_CMD_SEQ_ERROR = 0xc, NVME_SC_SGL_INVALID_LAST = 0xd, NVME_SC_SGL_INVALID_COUNT = 0xe, NVME_SC_SGL_INVALID_DATA = 0xf, NVME_SC_SGL_INVALID_METADATA = 0x10, NVME_SC_SGL_INVALID_TYPE = 0x11, |
eb793e2c9 nvme.h: add NVMe ... |
1411 1412 1413 |
NVME_SC_SGL_INVALID_OFFSET = 0x16, NVME_SC_SGL_INVALID_SUBTYPE = 0x17, |
48c9e85b2 nvme: resync incl... |
1414 1415 |
NVME_SC_SANITIZE_FAILED = 0x1C, NVME_SC_SANITIZE_IN_PROGRESS = 0x1D, |
93045d594 nvme.h: add suppo... |
1416 |
NVME_SC_NS_WRITE_PROTECTED = 0x20, |
48c9e85b2 nvme: resync incl... |
1417 |
NVME_SC_CMD_INTERRUPTED = 0x21, |
93045d594 nvme.h: add suppo... |
1418 |
|
9d99a8dda nvme: move hardwa... |
1419 1420 1421 1422 |
NVME_SC_LBA_RANGE = 0x80, NVME_SC_CAP_EXCEEDED = 0x81, NVME_SC_NS_NOT_READY = 0x82, NVME_SC_RESERVATION_CONFLICT = 0x83, |
eb793e2c9 nvme.h: add NVMe ... |
1423 1424 1425 1426 |
/* * Command Specific Status: */ |
9d99a8dda nvme: move hardwa... |
1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 |
NVME_SC_CQ_INVALID = 0x100, NVME_SC_QID_INVALID = 0x101, NVME_SC_QUEUE_SIZE = 0x102, NVME_SC_ABORT_LIMIT = 0x103, NVME_SC_ABORT_MISSING = 0x104, NVME_SC_ASYNC_LIMIT = 0x105, NVME_SC_FIRMWARE_SLOT = 0x106, NVME_SC_FIRMWARE_IMAGE = 0x107, NVME_SC_INVALID_VECTOR = 0x108, NVME_SC_INVALID_LOG_PAGE = 0x109, NVME_SC_INVALID_FORMAT = 0x10a, |
a446c0840 nvme.h: resync wi... |
1438 |
NVME_SC_FW_NEEDS_CONV_RESET = 0x10b, |
9d99a8dda nvme: move hardwa... |
1439 1440 1441 1442 |
NVME_SC_INVALID_QUEUE = 0x10c, NVME_SC_FEATURE_NOT_SAVEABLE = 0x10d, NVME_SC_FEATURE_NOT_CHANGEABLE = 0x10e, NVME_SC_FEATURE_NOT_PER_NS = 0x10f, |
a446c0840 nvme.h: resync wi... |
1443 1444 1445 |
NVME_SC_FW_NEEDS_SUBSYS_RESET = 0x110, NVME_SC_FW_NEEDS_RESET = 0x111, NVME_SC_FW_NEEDS_MAX_TIME = 0x112, |
9581ae4f0 nvme: fix typos i... |
1446 |
NVME_SC_FW_ACTIVATE_PROHIBITED = 0x113, |
a446c0840 nvme.h: resync wi... |
1447 |
NVME_SC_OVERLAPPING_RANGE = 0x114, |
9581ae4f0 nvme: fix typos i... |
1448 |
NVME_SC_NS_INSUFFICIENT_CAP = 0x115, |
a446c0840 nvme.h: resync wi... |
1449 1450 1451 1452 1453 1454 |
NVME_SC_NS_ID_UNAVAILABLE = 0x116, NVME_SC_NS_ALREADY_ATTACHED = 0x118, NVME_SC_NS_IS_PRIVATE = 0x119, NVME_SC_NS_NOT_ATTACHED = 0x11a, NVME_SC_THIN_PROV_NOT_SUPP = 0x11b, NVME_SC_CTRL_LIST_INVALID = 0x11c, |
48c9e85b2 nvme: resync incl... |
1455 1456 |
NVME_SC_BP_WRITE_PROHIBITED = 0x11e, NVME_SC_PMR_SAN_PROHIBITED = 0x123, |
eb793e2c9 nvme.h: add NVMe ... |
1457 1458 1459 1460 |
/* * I/O Command Set Specific - NVM commands: */ |
9d99a8dda nvme: move hardwa... |
1461 1462 1463 |
NVME_SC_BAD_ATTRIBUTES = 0x180, NVME_SC_INVALID_PI = 0x181, NVME_SC_READ_ONLY = 0x182, |
3b7c33b28 nvme.h: add Write... |
1464 |
NVME_SC_ONCS_NOT_SUPPORTED = 0x183, |
eb793e2c9 nvme.h: add NVMe ... |
1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 |
/* * I/O Command Set Specific - Fabrics commands: */ NVME_SC_CONNECT_FORMAT = 0x180, NVME_SC_CONNECT_CTRL_BUSY = 0x181, NVME_SC_CONNECT_INVALID_PARAM = 0x182, NVME_SC_CONNECT_RESTART_DISC = 0x183, NVME_SC_CONNECT_INVALID_HOST = 0x184, NVME_SC_DISCOVERY_RESTART = 0x190, NVME_SC_AUTH_REQUIRED = 0x191, /* |
240e6ee27 nvme: support for... |
1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 |
* I/O Command Set Specific - Zoned commands: */ NVME_SC_ZONE_BOUNDARY_ERROR = 0x1b8, NVME_SC_ZONE_FULL = 0x1b9, NVME_SC_ZONE_READ_ONLY = 0x1ba, NVME_SC_ZONE_OFFLINE = 0x1bb, NVME_SC_ZONE_INVALID_WRITE = 0x1bc, NVME_SC_ZONE_TOO_MANY_ACTIVE = 0x1bd, NVME_SC_ZONE_TOO_MANY_OPEN = 0x1be, NVME_SC_ZONE_INVALID_TRANSITION = 0x1bf, /* |
eb793e2c9 nvme.h: add NVMe ... |
1491 1492 |
* Media and Data Integrity Errors: */ |
9d99a8dda nvme: move hardwa... |
1493 1494 1495 1496 1497 1498 1499 |
NVME_SC_WRITE_FAULT = 0x280, NVME_SC_READ_ERROR = 0x281, NVME_SC_GUARD_CHECK = 0x282, NVME_SC_APPTAG_CHECK = 0x283, NVME_SC_REFTAG_CHECK = 0x284, NVME_SC_COMPARE_FAILED = 0x285, NVME_SC_ACCESS_DENIED = 0x286, |
a446c0840 nvme.h: resync wi... |
1500 |
NVME_SC_UNWRITTEN_BLOCK = 0x287, |
eb793e2c9 nvme.h: add NVMe ... |
1501 |
|
1a3762165 nvme.h: add ANA d... |
1502 1503 1504 1505 1506 1507 |
/* * Path-related Errors: */ NVME_SC_ANA_PERSISTENT_LOSS = 0x301, NVME_SC_ANA_INACCESSIBLE = 0x302, NVME_SC_ANA_TRANSITION = 0x303, |
783f4a440 nvme: call nvme_c... |
1508 |
NVME_SC_HOST_PATH_ERROR = 0x370, |
2dc3947b5 nvme: introduce "... |
1509 |
NVME_SC_HOST_ABORTED_CMD = 0x371, |
1a3762165 nvme.h: add ANA d... |
1510 |
|
49cd84b6f nvme: implement E... |
1511 |
NVME_SC_CRD = 0x1800, |
9d99a8dda nvme: move hardwa... |
1512 1513 1514 1515 |
NVME_SC_DNR = 0x4000, }; struct nvme_completion { |
eb793e2c9 nvme.h: add NVMe ... |
1516 1517 1518 |
/* * Used by Admin and Fabrics commands to return data: */ |
d49187e97 nvme: introduce s... |
1519 1520 1521 1522 1523 |
union nvme_result { __le16 u16; __le32 u32; __le64 u64; } result; |
9d99a8dda nvme: move hardwa... |
1524 1525 1526 1527 1528 |
__le16 sq_head; /* how much of this queue may be reclaimed */ __le16 sq_id; /* submission queue that generated this entry */ __u16 command_id; /* of the command which completed */ __le16 status; /* did the command fail, and if so, why? */ }; |
8ef2074d2 nvme: Add tertiar... |
1529 1530 |
#define NVME_VS(major, minor, tertiary) \ (((major) << 16) | ((minor) << 8) | (tertiary)) |
9d99a8dda nvme: move hardwa... |
1531 |
|
c61d788b8 nvmet: allow over... |
1532 1533 1534 |
#define NVME_MAJOR(ver) ((ver) >> 16) #define NVME_MINOR(ver) (((ver) >> 8) & 0xff) #define NVME_TERTIARY(ver) ((ver) & 0xff) |
b60503ba4 NVMe: New driver |
1535 |
#endif /* _LINUX_NVME_H */ |