Commit 8ef2074d authored by Gabriel Krisman Bertazi's avatar Gabriel Krisman Bertazi Committed by Jens Axboe

nvme: Add tertiary number to NVME_VS

NVMe 1.2.1 specification adds a tertiary element to the version number.
This updates the macro and its callers to include the final number and
fixup a single place in nvmet where the version was generated manually.
Signed-off-by: default avatarGabriel Krisman Bertazi <krisman@linux.vnet.ibm.com>
Reviewed-by: default avatarSagi Grimberg <sagi@grimberg.me>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent 202021c1
...@@ -900,9 +900,9 @@ static int nvme_revalidate_ns(struct nvme_ns *ns, struct nvme_id_ns **id) ...@@ -900,9 +900,9 @@ static int nvme_revalidate_ns(struct nvme_ns *ns, struct nvme_id_ns **id)
return -ENODEV; return -ENODEV;
} }
if (ns->ctrl->vs >= NVME_VS(1, 1)) if (ns->ctrl->vs >= NVME_VS(1, 1, 0))
memcpy(ns->eui, (*id)->eui64, sizeof(ns->eui)); memcpy(ns->eui, (*id)->eui64, sizeof(ns->eui));
if (ns->ctrl->vs >= NVME_VS(1, 2)) if (ns->ctrl->vs >= NVME_VS(1, 2, 0))
memcpy(ns->uuid, (*id)->nguid, sizeof(ns->uuid)); memcpy(ns->uuid, (*id)->nguid, sizeof(ns->uuid));
return 0; return 0;
...@@ -1242,7 +1242,7 @@ int nvme_init_identify(struct nvme_ctrl *ctrl) ...@@ -1242,7 +1242,7 @@ int nvme_init_identify(struct nvme_ctrl *ctrl)
} }
page_shift = NVME_CAP_MPSMIN(cap) + 12; page_shift = NVME_CAP_MPSMIN(cap) + 12;
if (ctrl->vs >= NVME_VS(1, 1)) if (ctrl->vs >= NVME_VS(1, 1, 0))
ctrl->subsystem = NVME_CAP_NSSRC(cap); ctrl->subsystem = NVME_CAP_NSSRC(cap);
ret = nvme_identify_ctrl(ctrl, &id); ret = nvme_identify_ctrl(ctrl, &id);
...@@ -1842,7 +1842,7 @@ static void nvme_scan_work(struct work_struct *work) ...@@ -1842,7 +1842,7 @@ static void nvme_scan_work(struct work_struct *work)
return; return;
nn = le32_to_cpu(id->nn); nn = le32_to_cpu(id->nn);
if (ctrl->vs >= NVME_VS(1, 1) && if (ctrl->vs >= NVME_VS(1, 1, 0) &&
!(ctrl->quirks & NVME_QUIRK_IDENTIFY_CNS)) { !(ctrl->quirks & NVME_QUIRK_IDENTIFY_CNS)) {
if (!nvme_scan_ns_list(ctrl, nn)) if (!nvme_scan_ns_list(ctrl, nn))
goto done; goto done;
......
...@@ -1214,7 +1214,7 @@ static int nvme_configure_admin_queue(struct nvme_dev *dev) ...@@ -1214,7 +1214,7 @@ static int nvme_configure_admin_queue(struct nvme_dev *dev)
u64 cap = lo_hi_readq(dev->bar + NVME_REG_CAP); u64 cap = lo_hi_readq(dev->bar + NVME_REG_CAP);
struct nvme_queue *nvmeq; struct nvme_queue *nvmeq;
dev->subsystem = readl(dev->bar + NVME_REG_VS) >= NVME_VS(1, 1) ? dev->subsystem = readl(dev->bar + NVME_REG_VS) >= NVME_VS(1, 1, 0) ?
NVME_CAP_NSSRC(cap) : 0; NVME_CAP_NSSRC(cap) : 0;
if (dev->subsystem && if (dev->subsystem &&
...@@ -1633,7 +1633,7 @@ static int nvme_pci_enable(struct nvme_dev *dev) ...@@ -1633,7 +1633,7 @@ static int nvme_pci_enable(struct nvme_dev *dev)
* NULL as final argument to sysfs_add_file_to_group. * NULL as final argument to sysfs_add_file_to_group.
*/ */
if (readl(dev->bar + NVME_REG_VS) >= NVME_VS(1, 2)) { if (readl(dev->bar + NVME_REG_VS) >= NVME_VS(1, 2, 0)) {
dev->cmb = nvme_map_cmb(dev); dev->cmb = nvme_map_cmb(dev);
if (dev->cmbsz) { if (dev->cmbsz) {
......
...@@ -606,7 +606,7 @@ static int nvme_fill_device_id_eui64(struct nvme_ns *ns, struct sg_io_hdr *hdr, ...@@ -606,7 +606,7 @@ static int nvme_fill_device_id_eui64(struct nvme_ns *ns, struct sg_io_hdr *hdr,
eui = id_ns->eui64; eui = id_ns->eui64;
len = sizeof(id_ns->eui64); len = sizeof(id_ns->eui64);
if (ns->ctrl->vs >= NVME_VS(1, 2)) { if (ns->ctrl->vs >= NVME_VS(1, 2, 0)) {
if (bitmap_empty(eui, len * 8)) { if (bitmap_empty(eui, len * 8)) {
eui = id_ns->nguid; eui = id_ns->nguid;
len = sizeof(id_ns->nguid); len = sizeof(id_ns->nguid);
...@@ -679,7 +679,7 @@ static int nvme_trans_device_id_page(struct nvme_ns *ns, struct sg_io_hdr *hdr, ...@@ -679,7 +679,7 @@ static int nvme_trans_device_id_page(struct nvme_ns *ns, struct sg_io_hdr *hdr,
{ {
int res; int res;
if (ns->ctrl->vs >= NVME_VS(1, 1)) { if (ns->ctrl->vs >= NVME_VS(1, 1, 0)) {
res = nvme_fill_device_id_eui64(ns, hdr, resp, alloc_len); res = nvme_fill_device_id_eui64(ns, hdr, resp, alloc_len);
if (res != -EOPNOTSUPP) if (res != -EOPNOTSUPP)
return res; return res;
......
...@@ -882,7 +882,7 @@ struct nvmet_subsys *nvmet_subsys_alloc(const char *subsysnqn, ...@@ -882,7 +882,7 @@ struct nvmet_subsys *nvmet_subsys_alloc(const char *subsysnqn,
if (!subsys) if (!subsys)
return NULL; return NULL;
subsys->ver = (1 << 16) | (2 << 8) | 1; /* NVMe 1.2.1 */ subsys->ver = NVME_VS(1, 2, 1); /* NVMe 1.2.1 */
switch (type) { switch (type) {
case NVME_NQN_NVME: case NVME_NQN_NVME:
......
...@@ -960,6 +960,7 @@ struct nvme_completion { ...@@ -960,6 +960,7 @@ struct nvme_completion {
__le16 status; /* did the command fail, and if so, why? */ __le16 status; /* did the command fail, and if so, why? */
}; };
#define NVME_VS(major, minor) (((major) << 16) | ((minor) << 8)) #define NVME_VS(major, minor, tertiary) \
(((major) << 16) | ((minor) << 8) | (tertiary))
#endif /* _LINUX_NVME_H */ #endif /* _LINUX_NVME_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment