[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 05/24] nvme: populate the mandatory subnqn and ver fields
From: |
Klaus Jensen |
Subject: |
[PATCH v4 05/24] nvme: populate the mandatory subnqn and ver fields |
Date: |
Thu, 19 Dec 2019 14:09:02 +0100 |
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 | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/hw/block/nvme.c b/hw/block/nvme.c
index e458b8292ac0..8f7049dc2dd5 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/
*/
/**
@@ -43,6 +43,8 @@
#include "trace.h"
#include "nvme.h"
+#define NVME_SPEC_VER 0x00010201
+
#define NVME_GUEST_ERR(trace, fmt, ...) \
do { \
(trace_##trace)(__VA_ARGS__); \
@@ -1365,6 +1367,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(NVME_SPEC_VER);
id->oacs = cpu_to_le16(0);
id->frmw = 7 << 1;
id->lpa = 1 << 0;
@@ -1372,6 +1375,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);
@@ -1386,7 +1393,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 = NVME_SPEC_VER;
n->bar.intmc = n->bar.intms = 0;
if (n->params.cmb_size_mb) {
--
2.24.1
- [PATCH v4 22/24] nvme: bump controller pci device id, (continued)
- Message not available
- [PATCH v4 22/24] nvme: bump controller pci device id, Klaus Jensen, 2019/12/19
- Re: [PATCH v4 22/24] nvme: bump controller pci device id, Keith Busch, 2019/12/19
- Re: [PATCH v4 22/24] nvme: bump controller pci device id, Klaus Birkelund Jensen, 2019/12/19
- Re: [PATCH v4 22/24] nvme: bump controller pci device id, Keith Busch, 2019/12/19
- Re: [PATCH v4 22/24] nvme: bump controller pci device id, Klaus Birkelund Jensen, 2019/12/19
Message not available
Message not available
Message not available
Message not available
Message not available
Message not available
- [PATCH v4 05/24] nvme: populate the mandatory subnqn and ver fields,
Klaus Jensen <=
Message not available
Message not available
Message not available
Message not available
Message not available
Message not available
Message not available
Message not available
Message not available
Message not available