From: Klaus Birkelund Jensen Date: Fri, 5 Jul 2019 07:23:22 +0000 (+0200) Subject: nvme: populate the mandatory subnqn and ver fields X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=21837d30e6ec1d87371c3eddd6e31f0ef581f21f;p=people%2Fpauldu%2Fqemu.git nvme: populate the mandatory subnqn and ver fields 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 Birkelund Jensen --- diff --git a/hw/block/nvme.c b/hw/block/nvme.c index e27376d9ee..c233c141b8 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -1366,12 +1366,18 @@ 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->sqes = (0x6 << 4) | 0x6; 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.2014-08.org.nvmexpress:uuid:"); + qemu_uuid_unparse(&qemu_uuid, + (char *) id->subnqn + strlen((char *) id->subnqn)); + 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 +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) {