Blame SOURCES/0002-nvme-print-split-pmrmsc-into-pmrmscl-and-pmrmscu.patch

30c59b
diff --git a/linux/nvme.h b/linux/nvme.h
30c59b
index f2c4fdb..9e7a108 100644
30c59b
--- a/linux/nvme.h
30c59b
+++ b/linux/nvme.h
30c59b
@@ -172,7 +172,8 @@ enum {
30c59b
 	NVME_REG_PMRSTS = 0x0e08,	/* Persistent Memory Region Status */
30c59b
 	NVME_REG_PMREBS = 0x0e0c,	/* Persistent Memory Region Elasticity Buffer Size */
30c59b
 	NVME_REG_PMRSWTP= 0x0e10,	/* Persistent Memory Region Sustained Write Throughput */
30c59b
-	NVME_REG_PMRMSC = 0x0e14,	/* Persistent Memory Region Controller Memory Space Control */
30c59b
+	NVME_REG_PMRMSCL= 0x0e14,	/* Persistent Memory Region Controller Memory Space Control Lower */
30c59b
+	NVME_REG_PMRMSCU= 0x0e18,	/* Persistent Memory Region Controller Memory Space Control Upper*/
30c59b
 	NVME_REG_DBS	= 0x1000,	/* SQ 0 Tail Doorbell */
30c59b
 };
30c59b
 
30c59b
diff --git a/nvme-print.c b/nvme-print.c
30c59b
index 30fca29..93f0e5a 100644
30c59b
--- a/nvme-print.c
30c59b
+++ b/nvme-print.c
30c59b
@@ -1293,12 +1293,18 @@ static void nvme_show_registers_pmrswtp(__u32 pmrswtp)
30c59b
 		nvme_register_pmr_pmrszu_to_string(pmrswtp & 0x0000000f));
30c59b
 }
30c59b
 
30c59b
-static void nvme_show_registers_pmrmsc(uint64_t pmrmsc)
30c59b
+static void nvme_show_registers_pmrmscl(uint32_t pmrmscl)
30c59b
 {
30c59b
-	printf("\tController Base Address (CBA)		: %" PRIx64 "\n",
30c59b
-		(pmrmsc & 0xfffffffffffff000) >> 12);
30c59b
-	printf("\tController Memory Space Enable (CMSE)	: %" PRIx64 "\n\n",
30c59b
-		(pmrmsc & 0x0000000000000002) >> 1);
30c59b
+	printf("\tController Base Address         (CBA): %#x\n",
30c59b
+		(pmrmscl & 0xfffff000) >> 12);
30c59b
+	printf("\tController Memory Space Enable (CMSE): %#x\n\n",
30c59b
+		(pmrmscl & 0x00000002) >> 1);
30c59b
+}
30c59b
+
30c59b
+static void nvme_show_registers_pmrmscu(uint32_t pmrmscu)
30c59b
+{
30c59b
+	printf("\tController Base Address         (CBA): %#x\n",
30c59b
+		pmrmscu);
30c59b
 }
30c59b
 
30c59b
 static inline uint32_t mmio_read32(void *addr)
30c59b
@@ -1318,9 +1324,10 @@ static inline __u64 mmio_read64(void *addr)
30c59b
 
30c59b
 static void json_ctrl_registers(void *bar)
30c59b
 {
30c59b
-	uint64_t cap, asq, acq, bpmbl, cmbmsc, pmrmsc;
30c59b
+	uint64_t cap, asq, acq, bpmbl, cmbmsc;
30c59b
 	uint32_t vs, intms, intmc, cc, csts, nssr, aqa, cmbsz, cmbloc,
30c59b
-		bpinfo, bprsel, cmbsts, pmrcap, pmrctl, pmrsts, pmrebs, pmrswtp;
30c59b
+		bpinfo, bprsel, cmbsts, pmrcap, pmrctl, pmrsts, pmrebs, pmrswtp,
30c59b
+		pmrmscl, pmrmscu;
30c59b
 	struct json_object *root;
30c59b
 
30c59b
 	cap = mmio_read64(bar + NVME_REG_CAP);
30c59b
@@ -1345,7 +1352,8 @@ static void json_ctrl_registers(void *bar)
30c59b
 	pmrsts = mmio_read32(bar + NVME_REG_PMRSTS);
30c59b
 	pmrebs = mmio_read32(bar + NVME_REG_PMREBS);
30c59b
 	pmrswtp = mmio_read32(bar + NVME_REG_PMRSWTP);
30c59b
-	pmrmsc = mmio_read64(bar + NVME_REG_PMRMSC);
30c59b
+	pmrmscl = mmio_read32(bar + NVME_REG_PMRMSCL);
30c59b
+	pmrmscu = mmio_read32(bar + NVME_REG_PMRMSCU);
30c59b
 
30c59b
 	root = json_create_object();
30c59b
 	json_object_add_value_uint(root, "cap", cap);
30c59b
@@ -1370,7 +1378,8 @@ static void json_ctrl_registers(void *bar)
30c59b
 	json_object_add_value_int(root, "pmrsts", pmrsts);
30c59b
 	json_object_add_value_int(root, "pmrebs", pmrebs);
30c59b
 	json_object_add_value_int(root, "pmrswtp", pmrswtp);
30c59b
-	json_object_add_value_uint(root, "pmrmsc", pmrmsc);
30c59b
+	json_object_add_value_uint(root, "pmrmscl", pmrmscl);
30c59b
+	json_object_add_value_uint(root, "pmrmscu", pmrmscu);
30c59b
 	json_print_object(root, NULL);
30c59b
 	printf("\n");
30c59b
 	json_free_object(root);
30c59b
@@ -1379,9 +1388,10 @@ static void json_ctrl_registers(void *bar)
30c59b
 void nvme_show_ctrl_registers(void *bar, bool fabrics, enum nvme_print_flags flags)
30c59b
 {
30c59b
 	const unsigned int reg_size = 0x50;  /* 00h to 4Fh */
30c59b
-	uint64_t cap, asq, acq, bpmbl, cmbmsc, pmrmsc;
30c59b
+	uint64_t cap, asq, acq, bpmbl, cmbmsc;
30c59b
 	uint32_t vs, intms, intmc, cc, csts, nssr, aqa, cmbsz, cmbloc, bpinfo,
30c59b
-		 bprsel, cmbsts, pmrcap, pmrctl, pmrsts, pmrebs, pmrswtp;
30c59b
+		 bprsel, cmbsts, pmrcap, pmrctl, pmrsts, pmrebs, pmrswtp,
30c59b
+		 pmrmscl, pmrmscu;
30c59b
 	int human = flags & VERBOSE;
30c59b
 
30c59b
 	if (flags & BINARY)
30c59b
@@ -1411,7 +1421,8 @@ void nvme_show_ctrl_registers(void *bar, bool fabrics, enum nvme_print_flags fla
30c59b
 	pmrsts = mmio_read32(bar + NVME_REG_PMRSTS);
30c59b
 	pmrebs = mmio_read32(bar + NVME_REG_PMREBS);
30c59b
 	pmrswtp = mmio_read32(bar + NVME_REG_PMRSWTP);
30c59b
-	pmrmsc = mmio_read64(bar + NVME_REG_PMRMSC);
30c59b
+	pmrmscl = mmio_read32(bar + NVME_REG_PMRMSCL);
30c59b
+	pmrmscu = mmio_read32(bar + NVME_REG_PMRMSCU);
30c59b
 
30c59b
 	if (human) {
30c59b
 		if (cap != 0xffffffff) {
30c59b
@@ -1490,8 +1501,11 @@ void nvme_show_ctrl_registers(void *bar, bool fabrics, enum nvme_print_flags fla
30c59b
 			printf("pmrswtp : %x\n", pmrswtp);
30c59b
 			nvme_show_registers_pmrswtp(pmrswtp);
30c59b
 
30c59b
-			printf("pmrmsc	: %"PRIx64"\n", pmrmsc);
30c59b
-			nvme_show_registers_pmrmsc(pmrmsc);
30c59b
+			printf("pmrmscl	: %#x\n", pmrmscl);
30c59b
+			nvme_show_registers_pmrmscl(pmrmscl);
30c59b
+
30c59b
+			printf("pmrmscu	: %#x\n", pmrmscu);
30c59b
+			nvme_show_registers_pmrmscu(pmrmscu);
30c59b
 		}
30c59b
 	} else {
30c59b
 		if (cap != 0xffffffff)
30c59b
@@ -1522,7 +1536,8 @@ void nvme_show_ctrl_registers(void *bar, bool fabrics, enum nvme_print_flags fla
30c59b
 			printf("pmrsts  : %x\n", pmrsts);
30c59b
 			printf("pmrebs  : %x\n", pmrebs);
30c59b
 			printf("pmrswtp : %x\n", pmrswtp);
30c59b
-			printf("pmrmsc	: %"PRIx64"\n", pmrmsc);
30c59b
+			printf("pmrmscl	: %#x\n", pmrmscl);
30c59b
+			printf("pmrmscu	: %#x\n", pmrmscu);
30c59b
 		}
30c59b
 	}
30c59b
 }