[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 04/20] nvme: populate the mandatory subnqn and ver fields
From: |
Klaus Jensen |
Subject: |
[PATCH v2 04/20] nvme: populate the mandatory subnqn and ver fields |
Date: |
Tue, 15 Oct 2019 12:38:44 +0200 |
Required for compliance with NVMe revision 1.2.1 or later. See NVM
Express 1.2.1, Section 5.11 ("Identify command"), Figure 90 and Section
7.9 ("NVMe Qualified Names").
This also bumps the supported version to 1.2.1.
Signed-off-by: Klaus Jensen <address@hidden>
---
hw/block/nvme.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/hw/block/nvme.c b/hw/block/nvme.c
index 277700fdcc58..16f0fba10b08 100644
--- a/hw/block/nvme.c
+++ b/hw/block/nvme.c
@@ -9,9 +9,9 @@
*/
/**
- * Reference Specs: http://www.nvmexpress.org, 1.2, 1.1, 1.0e
+ * Reference Specification: NVM Express 1.2.1
*
- * http://www.nvmexpress.org/resources/
+ * https://nvmexpress.org/resources/specifications/
*/
/**
@@ -1366,6 +1366,7 @@ static void nvme_realize(PCIDevice *pci_dev, Error **errp)
id->ieee[0] = 0x00;
id->ieee[1] = 0x02;
id->ieee[2] = 0xb3;
+ id->ver = cpu_to_le32(0x00010201);
id->oacs = cpu_to_le16(0);
id->frmw = 7 << 1;
id->lpa = 1 << 0;
@@ -1373,6 +1374,10 @@ static void nvme_realize(PCIDevice *pci_dev, Error
**errp)
id->cqes = (0x4 << 4) | 0x4;
id->nn = cpu_to_le32(n->num_namespaces);
id->oncs = cpu_to_le16(NVME_ONCS_WRITE_ZEROS | NVME_ONCS_TIMESTAMP);
+
+ strcpy((char *) id->subnqn, "nqn.2019-08.org.qemu:");
+ pstrcat((char *) id->subnqn, sizeof(id->subnqn), n->params.serial);
+
id->psd[0].mp = cpu_to_le16(0x9c4);
id->psd[0].enlat = cpu_to_le32(0x10);
id->psd[0].exlat = cpu_to_le32(0x4);
@@ -1387,7 +1392,7 @@ static void nvme_realize(PCIDevice *pci_dev, Error **errp)
NVME_CAP_SET_CSS(n->bar.cap, 1);
NVME_CAP_SET_MPSMAX(n->bar.cap, 4);
- n->bar.vs = 0x00010200;
+ n->bar.vs = 0x00010201;
n->bar.intmc = n->bar.intms = 0;
if (n->params.cmb_size_mb) {
--
2.23.0
- [PATCH v2 00/20] nvme: support NVMe v1.3d, SGLs and multiple namespaces, Klaus Jensen, 2019/10/15
- [PATCH v2 01/20] nvme: remove superfluous breaks, Klaus Jensen, 2019/10/15
- [PATCH v2 03/20] nvme: add missing fields in the identify controller data structure, Klaus Jensen, 2019/10/15
- [PATCH v2 02/20] nvme: move device parameters to separate struct, Klaus Jensen, 2019/10/15
- [PATCH v2 04/20] nvme: populate the mandatory subnqn and ver fields,
Klaus Jensen <=
- [PATCH v2 05/20] nvme: allow completion queues in the cmb, Klaus Jensen, 2019/10/15
- [PATCH v2 06/20] nvme: add support for the abort command, Klaus Jensen, 2019/10/15
- [PATCH v2 10/20] nvme: add logging to error information log page, Klaus Jensen, 2019/10/15
- [PATCH v2 07/20] nvme: refactor device realization, Klaus Jensen, 2019/10/15
- [PATCH v2 08/20] nvme: add support for the get log page command, Klaus Jensen, 2019/10/15
- [PATCH v2 09/20] nvme: add support for the asynchronous event request command, Klaus Jensen, 2019/10/15
- [PATCH v2 17/20] nvme: bump controller pci device id, Klaus Jensen, 2019/10/15
- [PATCH v2 11/20] nvme: add missing mandatory features, Klaus Jensen, 2019/10/15
- [PATCH v2 12/20] nvme: bump supported specification version to 1.3, Klaus Jensen, 2019/10/15
- [PATCH v2 19/20] nvme: make lba data size configurable, Klaus Jensen, 2019/10/15