From: Gollu Appalanaidu Date: Tue, 16 Mar 2021 13:06:50 +0000 (+0530) Subject: nvme: add lba status information attributes feature support X-Git-Tag: v1.14~41 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=db12a5d8130a64674a2d1a0ff537e199db4f23d0;p=users%2Fsagi%2Fnvme-cli.git nvme: add lba status information attributes feature support Adding LBA Status Information Attributes Feature with FID = 0x15. Signed-off-by: Gollu Appalanaidu --- diff --git a/linux/nvme.h b/linux/nvme.h index 966e4cbc..aa678c97 100644 --- a/linux/nvme.h +++ b/linux/nvme.h @@ -1280,6 +1280,7 @@ enum nvme_feat { NVME_FEAT_RRL = 0x12, NVME_FEAT_PLM_CONFIG = 0x13, NVME_FEAT_PLM_WINDOW = 0x14, + NVME_LBA_STATUS_INFO = 0x15, NVME_FEAT_HOST_BEHAVIOR = 0x16, NVME_FEAT_SANITIZE = 0x17, NVME_FEAT_ENDURANCE = 0x18, diff --git a/nvme-print.c b/nvme-print.c index ad731f87..4e9966ef 100755 --- a/nvme-print.c +++ b/nvme-print.c @@ -5012,6 +5012,7 @@ const char *nvme_feature_to_string(enum nvme_feat feature) case NVME_FEAT_RRL: return "Read Recovery Level"; case NVME_FEAT_PLM_CONFIG: return "Predicatable Latency Mode Config"; case NVME_FEAT_PLM_WINDOW: return "Predicatable Latency Mode Window"; + case NVME_LBA_STATUS_INFO: return "LBA Status Infomation Attributes"; case NVME_FEAT_ENDURANCE: return "Enduarance Event Group Configuration"; case NVME_FEAT_IOCS_PROFILE: return "I/O Command Set Profile"; case NVME_FEAT_SW_PROGRESS: return "Software Progress"; @@ -5516,6 +5517,11 @@ static const char *nvme_plm_window(__u32 plm) } } +void nvme_show_lba_status_info(__u32 result) { + printf("\tLBA Status Information Poll Interval (LSIPI) : %u\n", (result >> 16) & 0xffff); + printf("\tLBA Status Information Report Interval (LSIRI): %u\n", result & 0xffff); +} + static void nvme_show_plm_config(struct nvme_plm_config *plmcfg) { printf("\tEnable Event :%04x\n", le16_to_cpu(plmcfg->enable_event)); @@ -5610,6 +5616,9 @@ void nvme_feature_show_fields(enum nvme_feat fid, unsigned int result, unsigned case NVME_FEAT_PLM_WINDOW: printf("\tWindow Select: %s", nvme_plm_window(result)); break; + case NVME_LBA_STATUS_INFO: + nvme_show_lba_status_info(result); + break; case NVME_FEAT_ENDURANCE: printf("\tEndurance Group Identifier (ENDGID): %u\n", result & 0xffff); printf("\tEndurance Group Critical Warnings : %u\n", (result >> 16) & 0xff); diff --git a/nvme-print.h b/nvme-print.h index 0b4482ef..ead03a1e 100644 --- a/nvme-print.h +++ b/nvme-print.h @@ -88,6 +88,7 @@ void nvme_feature_show_fields(enum nvme_feat fid, unsigned int result, unsigned void nvme_directive_show(__u8 type, __u8 oper, __u16 spec, __u32 nsid, __u32 result, void *buf, __u32 len, enum nvme_print_flags flags); void nvme_show_select_result(__u32 result); +void nvme_show_lba_status_info(__u32 result); void nvme_show_zns_id_ctrl(struct nvme_zns_id_ctrl *ctrl, unsigned int mode); void nvme_show_id_ctrl_nvm(struct nvme_id_ctrl_nvm *ctrl_nvm, diff --git a/nvme.c b/nvme.c index 3dc57465..020f1b30 100644 --- a/nvme.c +++ b/nvme.c @@ -3643,6 +3643,9 @@ static int set_feature(int argc, char **argv, struct command *cmd, struct plugin printf("set-feature:%#02x (%s), value:%#08"PRIx64", cdw12:%#08"PRIx32", \ save:%#x\n", cfg.feature_id, nvme_feature_to_string(cfg.feature_id), (uint64_t)cfg.value, cfg.cdw12, cfg.save); + if (cfg.feature_id == NVME_LBA_STATUS_INFO) { + nvme_show_lba_status_info(result); + } if (buf) { if (cfg.feature_id == NVME_FEAT_LBA_RANGE) nvme_show_lba_range((struct nvme_lba_range_type *)buf,