On Apr 16 07:28, Klaus Jensen wrote: >On Apr 16 09:22, Gollu Appalanaidu wrote: >>Use lower case hexadecimal format for the constants and in >>comments use the same format as used in Spec. ("FFFFFFFFh") >> >>Signed-off-by: Gollu Appalanaidu >>--- >>-v3: Add Suggestions (Philippe) >>Describe the NVMe subsystem style in nvme.c header >> >>-v2: Address review comments (Klaus) >>use lower case hexa format for the code and in comments >>use the same format as used in Spec. ("FFFFFFFFh") >> >>hw/block/nvme-ns.c | 2 +- >>hw/block/nvme.c | 46 +++++++++++++++++++++++++------------------- >>include/block/nvme.h | 10 +++++----- >>3 files changed, 32 insertions(+), 26 deletions(-) >> >>diff --git a/hw/block/nvme-ns.c b/hw/block/nvme-ns.c >>index 7bb618f182..a0895614d9 100644 >>--- a/hw/block/nvme-ns.c >>+++ b/hw/block/nvme-ns.c >>@@ -303,7 +303,7 @@ static void nvme_ns_init_zoned(NvmeNamespace *ns) >> >> id_ns_z = g_malloc0(sizeof(NvmeIdNsZoned)); >> >>- /* MAR/MOR are zeroes-based, 0xffffffff means no limit */ >>+ /* MAR/MOR are zeroes-based, FFFFFFFFFh means no limit */ >> id_ns_z->mar = cpu_to_le32(ns->params.max_active_zones - 1); >> id_ns_z->mor = cpu_to_le32(ns->params.max_open_zones - 1); >> id_ns_z->zoc = 0; >>diff --git a/hw/block/nvme.c b/hw/block/nvme.c >>index 624a1431d0..cbe7f33daa 100644 >>--- a/hw/block/nvme.c >>+++ b/hw/block/nvme.c >>@@ -134,6 +134,12 @@ >> * Setting this property to true enables Read Across Zone Boundaries. >> */ >> >>+/** >>+ * While QEMU coding style prefers lowercase hexadecimal in constants, >>+ * the NVMe subsystem use the format from the NVMe specifications in >>+ * the comments: no '0x' prefix, uppercase, 'h' hexadecimal suffix >>+ */ >>+ >>#include "qemu/osdep.h" >>#include "qemu/units.h" >>#include "qemu/error-report.h" >>@@ -3607,18 +3613,18 @@ static uint16_t nvme_io_cmd(NvmeCtrl *n, NvmeRequest *req) >> >> /* >> * In the base NVM command set, Flush may apply to all namespaces >>- * (indicated by NSID being set to 0xFFFFFFFF). But if that feature is used >>+ * (indicated by NSID being set to FFFFFFFFh). But if that feature is used >> * along with TP 4056 (Namespace Types), it may be pretty screwed up. >> * >>- * If NSID is indeed set to 0xFFFFFFFF, we simply cannot associate the >>+ * If NSID is indeed set to FFFFFFFFh, we simply cannot associate the >> * opcode with a specific command since we cannot determine a unique I/O >> * command set. Opcode 0x0 could have any other meaning than something >> * equivalent to flushing and say it DOES have completely different >>- * semantics in some other command set - does an NSID of 0xFFFFFFFF then >>+ * semantics in some other command set - does an NSID of FFFFFFFFh then >> * mean "for all namespaces, apply whatever command set specific command >> * that uses the 0x0 opcode?" Or does it mean "for all namespaces, apply >> * whatever command that uses the 0x0 opcode if, and only if, it allows >>- * NSID to be 0xFFFFFFFF"? >>+ * NSID to be FFFFFFFFh"? >> * >> * Anyway (and luckily), for now, we do not care about this since the >> * device only supports namespace types that includes the NVM Flush command >>@@ -3934,7 +3940,7 @@ static uint16_t nvme_changed_nslist(NvmeCtrl *n, uint8_t rae, uint32_t buf_len, >> NVME_CHANGED_NSID_SIZE) { >> /* >> * If more than 1024 namespaces, the first entry in the log page should >>- * be set to 0xffffffff and the others to 0 as spec. >>+ * be set to FFFFFFFFh and the others to 0 as spec. >> */ >> if (i == ARRAY_SIZE(nslist)) { >> memset(nslist, 0x0, sizeof(nslist)); >>@@ -4332,7 +4338,7 @@ static uint16_t nvme_identify_nslist(NvmeCtrl *n, NvmeRequest *req, >> trace_pci_nvme_identify_nslist(min_nsid); >> >> /* >>- * Both 0xffffffff (NVME_NSID_BROADCAST) and 0xfffffffe are invalid values >>+ * Both FFFFFFFFh (NVME_NSID_BROADCAST) and FFFFFFFFEh are invalid values >> * since the Active Namespace ID List should return namespaces with ids >> * *higher* than the NSID specified in the command. This is also specified >> * in the spec (NVM Express v1.3d, Section 5.15.4). >>@@ -4379,7 +4385,7 @@ static uint16_t nvme_identify_nslist_csi(NvmeCtrl *n, NvmeRequest *req, >> trace_pci_nvme_identify_nslist_csi(min_nsid, c->csi); >> >> /* >>- * Same as in nvme_identify_nslist(), 0xffffffff/0xfffffffe are invalid. >>+ * Same as in nvme_identify_nslist(), FFFFFFFFh/FFFFFFFFEh are invalid. >> */ >> if (min_nsid >= NVME_NSID_BROADCAST - 1) { >> return NVME_INVALID_NSID | NVME_DNR; >>@@ -4595,7 +4601,7 @@ static uint16_t nvme_get_feature(NvmeCtrl *n, NvmeRequest *req) >> /* >> * The Reservation Notification Mask and Reservation Persistence >> * features require a status code of Invalid Field in Command when >>- * NSID is 0xFFFFFFFF. Since the device does not support those >>+ * NSID is FFFFFFFFh. Since the device does not support those >> * features we can always return Invalid Namespace or Format as we >> * should do for all other features. >> */ >>@@ -4854,8 +4860,8 @@ static uint16_t nvme_set_feature(NvmeCtrl *n, NvmeRequest *req) >> return NVME_INVALID_FIELD | NVME_DNR; >> } >> >>- trace_pci_nvme_setfeat_numq((dw11 & 0xFFFF) + 1, >>- ((dw11 >> 16) & 0xFFFF) + 1, >>+ trace_pci_nvme_setfeat_numq((dw11 & 0xffff) + 1, >>+ ((dw11 >> 16) & 0xffff) + 1, >> n->params.max_ioqpairs, >> n->params.max_ioqpairs); >> req->cqe.result = cpu_to_le32((n->params.max_ioqpairs - 1) | >>@@ -5493,7 +5499,7 @@ static void nvme_write_bar(NvmeCtrl *n, hwaddr offset, uint64_t data, >> n->bar.cc = data; >> } >> break; >>- case 0x1C: /* CSTS */ >>+ case 0x1c: /* CSTS */ >> if (data & (1 << 4)) { >> NVME_GUEST_ERR(pci_nvme_ub_mmiowr_ssreset_w1c_unsupported, >> "attempted to W1C CSTS.NSSRO" >>@@ -5505,7 +5511,7 @@ static void nvme_write_bar(NvmeCtrl *n, hwaddr offset, uint64_t data, >> } >> break; >> case 0x20: /* NSSR */ >>- if (data == 0x4E564D65) { >>+ if (data == 0x4e564d65) { >> trace_pci_nvme_ub_mmiowr_ssreset_unsupported(); >> } else { >> /* The spec says that writes of other values have no effect */ >>@@ -5575,11 +5581,11 @@ static void nvme_write_bar(NvmeCtrl *n, hwaddr offset, uint64_t data, >> n->bar.cmbmsc = (n->bar.cmbmsc & 0xffffffff) | (data << 32); >> return; >> >>- case 0xE00: /* PMRCAP */ >>+ case 0xe00: /* PMRCAP */ >> NVME_GUEST_ERR(pci_nvme_ub_mmiowr_pmrcap_readonly, >> "invalid write to PMRCAP register, ignored"); >> return; >>- case 0xE04: /* PMRCTL */ >>+ case 0xe04: /* PMRCTL */ >> n->bar.pmrctl = data; >> if (NVME_PMRCTL_EN(data)) { >> memory_region_set_enabled(&n->pmr.dev->mr, true); >>@@ -5590,19 +5596,19 @@ static void nvme_write_bar(NvmeCtrl *n, hwaddr offset, uint64_t data, >> n->pmr.cmse = false; >> } >> return; >>- case 0xE08: /* PMRSTS */ >>+ case 0xe08: /* PMRSTS */ >> NVME_GUEST_ERR(pci_nvme_ub_mmiowr_pmrsts_readonly, >> "invalid write to PMRSTS register, ignored"); >> return; >>- case 0xE0C: /* PMREBS */ >>+ case 0xe0C: /* PMREBS */ >> NVME_GUEST_ERR(pci_nvme_ub_mmiowr_pmrebs_readonly, >> "invalid write to PMREBS register, ignored"); >> return; >>- case 0xE10: /* PMRSWTP */ >>+ case 0xe10: /* PMRSWTP */ >> NVME_GUEST_ERR(pci_nvme_ub_mmiowr_pmrswtp_readonly, >> "invalid write to PMRSWTP register, ignored"); >> return; >>- case 0xE14: /* PMRMSCL */ >>+ case 0xe14: /* PMRMSCL */ >> if (!NVME_CAP_PMRS(n->bar.cap)) { >> return; >> } >>@@ -5622,7 +5628,7 @@ static void nvme_write_bar(NvmeCtrl *n, hwaddr offset, uint64_t data, >> } >> >> return; >>- case 0xE18: /* PMRMSCU */ >>+ case 0xe18: /* PMRMSCU */ >> if (!NVME_CAP_PMRS(n->bar.cap)) { >> return; >> } >>@@ -5664,7 +5670,7 @@ static uint64_t nvme_mmio_read(void *opaque, hwaddr addr, unsigned size) >> * from PMRSTS should ensure prior writes >> * made it to persistent media >> */ >>- if (addr == 0xE08 && >>+ if (addr == 0xe08 && >> (NVME_PMRCAP_PMRWBM(n->bar.pmrcap) & 0x02)) { >> memory_region_msync(&n->pmr.dev->mr, 0, n->pmr.dev->size); >> } >>diff --git a/include/block/nvme.h b/include/block/nvme.h >>index 4ac926fbc6..0739e0d665 100644 >>--- a/include/block/nvme.h >>+++ b/include/block/nvme.h >>@@ -848,8 +848,8 @@ enum NvmeStatusCodes { >> NVME_FW_REQ_SUSYSTEM_RESET = 0x0110, >> NVME_NS_ALREADY_ATTACHED = 0x0118, >> NVME_NS_PRIVATE = 0x0119, >>- NVME_NS_NOT_ATTACHED = 0x011A, >>- NVME_NS_CTRL_LIST_INVALID = 0x011C, >>+ NVME_NS_NOT_ATTACHED = 0x011a, >>+ NVME_NS_CTRL_LIST_INVALID = 0x011c, >> NVME_CONFLICTING_ATTRS = 0x0180, >> NVME_INVALID_PROT_INFO = 0x0181, >> NVME_WRITE_TO_RO = 0x0182, >>@@ -1409,9 +1409,9 @@ typedef enum NvmeZoneState { >> NVME_ZONE_STATE_IMPLICITLY_OPEN = 0x02, >> NVME_ZONE_STATE_EXPLICITLY_OPEN = 0x03, >> NVME_ZONE_STATE_CLOSED = 0x04, >>- NVME_ZONE_STATE_READ_ONLY = 0x0D, >>- NVME_ZONE_STATE_FULL = 0x0E, >>- NVME_ZONE_STATE_OFFLINE = 0x0F, >>+ NVME_ZONE_STATE_READ_ONLY = 0x0d, >>+ NVME_ZONE_STATE_FULL = 0x0e, >>+ NVME_ZONE_STATE_OFFLINE = 0x0f, >>} NvmeZoneState; >> >>static inline void _nvme_check_size(void) >>-- >>2.17.1 >> > >Looks good. I'll fixup a couple of missing constants in the comments >(e.g. 0x0 -> 0h) when merged. > >Reviewed-by: Klaus Jensen Applied to nvme-next.