From b090be5af6bae125d5536f9d5f77d6e19b07407f Mon Sep 17 00:00:00 2001 From: Francis Pravin Date: Wed, 25 Sep 2024 09:47:31 +0530 Subject: [PATCH] nvme-print-json: print CMBEBS and CMBSWTP in json format Print the CMBEBS and CMBSWTP register in json forma Signed-off-by: Francis Pravin --- nvme-print-json.c | 70 +++++++++++++++++++++++++++++++---------------- 1 file changed, 46 insertions(+), 24 deletions(-) diff --git a/nvme-print-json.c b/nvme-print-json.c index 3ac6baa4..f8109b8a 100644 --- a/nvme-print-json.c +++ b/nvme-print-json.c @@ -1182,6 +1182,30 @@ static void json_registers_cmbsts(uint32_t cmbsts, struct json_object *r) obj_add_uint_x(r, "Controller Base Address Invalid (CBAI)", cmbsts & 1); } +static void json_registers_cmbebs(uint32_t cmbebs, struct json_object *r) +{ + char buffer[BUF_LEN]; + + obj_add_uint_nx(r, "cmbebs", cmbebs); + + obj_add_uint_nx(r, "CMB Elasticity Buffer Size Base (CMBWBZ)", cmbebs >> 8); + sprintf(buffer, "%s", cmbebs & 0x10 ? "shall" : "may"); + obj_add_str(r, "CMB Read Bypass Behavior (CMBRBB)", buffer); + obj_add_str(r, "CMB Elasticity Buffer Size Units (CMBSZU)", + nvme_register_unit_to_string(cmbebs & 0xf)); +} + +static void json_registers_cmbswtp(uint32_t cmbswtp, struct json_object *r) +{ + char str[STR_LEN]; + + obj_add_uint_nx(r, "cmbswtp", cmbswtp); + + obj_add_uint_nx(r, "CMB Sustained Write Throughput (CMBSWTV)", cmbswtp >> 8); + sprintf(str, "%s/second", nvme_register_unit_to_string(cmbswtp & 0xf)); + obj_add_str(r, "CMB Sustained Write Throughput Units (CMBSWTU)", str); +} + static void json_registers_pmrcap(uint32_t pmrcap, struct json_object *r) { obj_add_uint_x(r, "pmrcap", pmrcap); @@ -2682,6 +2706,26 @@ static void json_ctrl_registers_cmbsts(void *bar, struct json_object *r) obj_add_int(r, "cmbsts", cmbsts); } +static void json_ctrl_registers_cmbebs(void *bar, struct json_object *r) +{ + uint32_t cmbebs = mmio_read32(bar + NVME_REG_CMBEBS); + + if (human()) + json_registers_cmbebs(cmbebs, obj_create_array_obj(r, "cmbebs")); + else + obj_add_int(r, "cmbebs", cmbebs); +} + +static void json_ctrl_registers_cmbswtp(void *bar, struct json_object *r) +{ + uint32_t cmbswtp = mmio_read32(bar + NVME_REG_CMBSWTP); + + if (human()) + json_registers_cmbswtp(cmbswtp, obj_create_array_obj(r, "cmbswtp")); + else + obj_add_int(r, "cmbswtp", cmbswtp); +} + static void json_ctrl_registers_pmrcap(void *bar, struct json_object *r) { uint32_t pmrcap = mmio_read32(bar + NVME_REG_PMRCAP); @@ -2780,6 +2824,8 @@ static void json_ctrl_registers(void *bar, bool fabrics) json_ctrl_registers_bpmbl(bar, r); json_ctrl_registers_cmbmsc(bar, r); json_ctrl_registers_cmbsts(bar, r); + json_ctrl_registers_cmbebs(bar, r); + json_ctrl_registers_cmbswtp(bar, r); json_ctrl_registers_pmrcap(bar, r); json_ctrl_registers_pmrctl(bar, r); json_ctrl_registers_pmrsts(bar, r); @@ -2791,30 +2837,6 @@ static void json_ctrl_registers(void *bar, bool fabrics) json_print(r); } -static void json_registers_cmbebs(__u32 cmbebs, struct json_object *r) -{ - char buffer[BUF_LEN]; - - obj_add_uint_nx(r, "cmbebs", cmbebs); - - obj_add_uint_nx(r, "CMB Elasticity Buffer Size Base (CMBWBZ)", cmbebs >> 8); - sprintf(buffer, "%s", cmbebs & 0x10 ? "shall" : "may"); - obj_add_str(r, "Read Bypass Behavior", buffer); - obj_add_str(r, "CMB Elasticity Buffer Size Units (CMBSZU)", - nvme_register_unit_to_string(cmbebs & 0xf)); -} - -static void json_registers_cmbswtp(__u32 cmbswtp, struct json_object *r) -{ - char str[STR_LEN]; - - obj_add_uint_nx(r, "cmbswtp", cmbswtp); - - obj_add_uint_nx(r, "CMB Sustained Write Throughput (CMBSWTV)", cmbswtp >> 8); - sprintf(str, "%s", nvme_register_unit_to_string(cmbswtp & 0xf)); - obj_add_str(r, "CMB Sustained Write Throughput Units (CMBSWTU)", str); -} - static void json_ctrl_register_human(int offset, uint64_t value, struct json_object *r) { char buffer[BUF_LEN]; -- 2.50.1