Message ID | 20200204095208.269131-5-k.jensen@samsung.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | nvme: support NVMe v1.3d, SGLs and multiple namespaces | expand |
On Tue, 2020-02-04 at 10:51 +0100, Klaus Jensen wrote: > Not used by the device model but added for completeness. See NVM Express > 1.2.1, Section 5.11 ("Identify command"), Figure 90 and Figure 93. > > Signed-off-by: Klaus Jensen <klaus.jensen@cnexlabs.com> > --- > include/block/nvme.h | 48 ++++++++++++++++++++++++++++++++++++-------- > 1 file changed, 40 insertions(+), 8 deletions(-) > > diff --git a/include/block/nvme.h b/include/block/nvme.h > index 8fb941c6537c..d2f65e8fe496 100644 > --- a/include/block/nvme.h > +++ b/include/block/nvme.h > @@ -543,7 +543,13 @@ typedef struct NvmeIdCtrl { > uint8_t ieee[3]; > uint8_t cmic; > uint8_t mdts; > - uint8_t rsvd255[178]; > + uint16_t cntlid; > + uint32_t ver; > + uint32_t rtd3r; > + uint32_t rtd3e; > + uint32_t oaes; > + uint32_t ctratt; > + uint8_t rsvd100[156]; > uint16_t oacs; > uint8_t acl; > uint8_t aerl; > @@ -551,10 +557,22 @@ typedef struct NvmeIdCtrl { > uint8_t lpa; > uint8_t elpe; > uint8_t npss; > - uint8_t rsvd511[248]; > + uint8_t avscc; > + uint8_t apsta; > + uint16_t wctemp; > + uint16_t cctemp; > + uint16_t mtfa; > + uint32_t hmpre; > + uint32_t hmmin; > + uint8_t tnvmcap[16]; > + uint8_t unvmcap[16]; > + uint32_t rpmbs; > + uint8_t rsvd316[4]; > + uint16_t kas; > + uint8_t rsvd322[190]; > uint8_t sqes; > uint8_t cqes; > - uint16_t rsvd515; > + uint16_t maxcmd; > uint32_t nn; > uint16_t oncs; > uint16_t fuses; > @@ -562,8 +580,14 @@ typedef struct NvmeIdCtrl { > uint8_t vwc; > uint16_t awun; > uint16_t awupf; > - uint8_t rsvd703[174]; > - uint8_t rsvd2047[1344]; > + uint8_t nvscc; > + uint8_t rsvd531; > + uint16_t acwu; > + uint8_t rsvd534[2]; > + uint32_t sgls; > + uint8_t rsvd540[228]; > + uint8_t subnqn[256]; > + uint8_t rsvd1024[1024]; > NvmePSD psd[32]; > uint8_t vs[1024]; > } NvmeIdCtrl; > @@ -653,13 +677,21 @@ typedef struct NvmeIdNs { > uint8_t mc; > uint8_t dpc; > uint8_t dps; > - > uint8_t nmic; > uint8_t rescap; > uint8_t fpi; > uint8_t dlfeat; > - > - uint8_t res34[94]; > + uint8_t rsvd33; This is wrong. nawun comes right after dlfeat > + uint16_t nawun; > + uint16_t nawupf; And here the error cancels out since here there should be 'nacwu' field. > + uint16_t nabsn; > + uint16_t nabo; > + uint16_t nabspf; > + uint8_t rsvd46[2]; > + uint8_t nvmcap[16]; > + uint8_t rsvd64[40]; > + uint8_t nguid[16]; > + uint64_t eui64; > NvmeLBAF lbaf[16]; > uint8_t res192[192]; Not related to the patch, but maybe rename this to rsvd192 for the sake of consistency? > uint8_t vs[3712]; I reviewed this patch by cross referencing the nvme structures as defined in the kernel, and the spec. I prefer to merge this patch with all other spec updates you do in following patches, to bring nvme.h up to date to 1.3d, so that it will be easier to review this and remove some noise from other patches. Best regards, Maxim Levitsky
diff --git a/include/block/nvme.h b/include/block/nvme.h index 8fb941c6537c..d2f65e8fe496 100644 --- a/include/block/nvme.h +++ b/include/block/nvme.h @@ -543,7 +543,13 @@ typedef struct NvmeIdCtrl { uint8_t ieee[3]; uint8_t cmic; uint8_t mdts; - uint8_t rsvd255[178]; + uint16_t cntlid; + uint32_t ver; + uint32_t rtd3r; + uint32_t rtd3e; + uint32_t oaes; + uint32_t ctratt; + uint8_t rsvd100[156]; uint16_t oacs; uint8_t acl; uint8_t aerl; @@ -551,10 +557,22 @@ typedef struct NvmeIdCtrl { uint8_t lpa; uint8_t elpe; uint8_t npss; - uint8_t rsvd511[248]; + uint8_t avscc; + uint8_t apsta; + uint16_t wctemp; + uint16_t cctemp; + uint16_t mtfa; + uint32_t hmpre; + uint32_t hmmin; + uint8_t tnvmcap[16]; + uint8_t unvmcap[16]; + uint32_t rpmbs; + uint8_t rsvd316[4]; + uint16_t kas; + uint8_t rsvd322[190]; uint8_t sqes; uint8_t cqes; - uint16_t rsvd515; + uint16_t maxcmd; uint32_t nn; uint16_t oncs; uint16_t fuses; @@ -562,8 +580,14 @@ typedef struct NvmeIdCtrl { uint8_t vwc; uint16_t awun; uint16_t awupf; - uint8_t rsvd703[174]; - uint8_t rsvd2047[1344]; + uint8_t nvscc; + uint8_t rsvd531; + uint16_t acwu; + uint8_t rsvd534[2]; + uint32_t sgls; + uint8_t rsvd540[228]; + uint8_t subnqn[256]; + uint8_t rsvd1024[1024]; NvmePSD psd[32]; uint8_t vs[1024]; } NvmeIdCtrl; @@ -653,13 +677,21 @@ typedef struct NvmeIdNs { uint8_t mc; uint8_t dpc; uint8_t dps; - uint8_t nmic; uint8_t rescap; uint8_t fpi; uint8_t dlfeat; - - uint8_t res34[94]; + uint8_t rsvd33; + uint16_t nawun; + uint16_t nawupf; + uint16_t nabsn; + uint16_t nabo; + uint16_t nabspf; + uint8_t rsvd46[2]; + uint8_t nvmcap[16]; + uint8_t rsvd64[40]; + uint8_t nguid[16]; + uint64_t eui64; NvmeLBAF lbaf[16]; uint8_t res192[192]; uint8_t vs[3712];
Not used by the device model but added for completeness. See NVM Express 1.2.1, Section 5.11 ("Identify command"), Figure 90 and Figure 93. Signed-off-by: Klaus Jensen <klaus.jensen@cnexlabs.com> --- include/block/nvme.h | 48 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 8 deletions(-)