@@ -265,6 +265,54 @@ struct nvme_config nvme_cfg = {
265265
266266static void * mmap_registers (struct nvme_dev * dev , bool writable );
267267
268+ static OPT_VALS (feature_name ) = {
269+ VAL_BYTE ("arbitration" , NVME_FEAT_FID_ARBITRATION ),
270+ VAL_BYTE ("power_mgmt" , NVME_FEAT_FID_POWER_MGMT ),
271+ VAL_BYTE ("lba_range" , NVME_FEAT_FID_LBA_RANGE ),
272+ VAL_BYTE ("temp_thresh" , NVME_FEAT_FID_TEMP_THRESH ),
273+ VAL_BYTE ("err_recovery" , NVME_FEAT_FID_ERR_RECOVERY ),
274+ VAL_BYTE ("volatile_wc" , NVME_FEAT_FID_VOLATILE_WC ),
275+ VAL_BYTE ("num_queues" , NVME_FEAT_FID_NUM_QUEUES ),
276+ VAL_BYTE ("irq_coalesce" , NVME_FEAT_FID_IRQ_COALESCE ),
277+ VAL_BYTE ("irq_config" , NVME_FEAT_FID_IRQ_CONFIG ),
278+ VAL_BYTE ("write_atomic" , NVME_FEAT_FID_WRITE_ATOMIC ),
279+ VAL_BYTE ("async_event" , NVME_FEAT_FID_ASYNC_EVENT ),
280+ VAL_BYTE ("auto_pst" , NVME_FEAT_FID_AUTO_PST ),
281+ VAL_BYTE ("host_mem_buf" , NVME_FEAT_FID_HOST_MEM_BUF ),
282+ VAL_BYTE ("timestamp" , NVME_FEAT_FID_TIMESTAMP ),
283+ VAL_BYTE ("kato" , NVME_FEAT_FID_KATO ),
284+ VAL_BYTE ("hctm" , NVME_FEAT_FID_HCTM ),
285+ VAL_BYTE ("nopsc" , NVME_FEAT_FID_NOPSC ),
286+ VAL_BYTE ("rrl" , NVME_FEAT_FID_RRL ),
287+ VAL_BYTE ("plm_config" , NVME_FEAT_FID_PLM_CONFIG ),
288+ VAL_BYTE ("plm_window" , NVME_FEAT_FID_PLM_WINDOW ),
289+ VAL_BYTE ("lba_sts_interval" , NVME_FEAT_FID_LBA_STS_INTERVAL ),
290+ VAL_BYTE ("host_behavior" , NVME_FEAT_FID_HOST_BEHAVIOR ),
291+ VAL_BYTE ("sanitize" , NVME_FEAT_FID_SANITIZE ),
292+ VAL_BYTE ("endurance_evt_cfg" , NVME_FEAT_FID_ENDURANCE_EVT_CFG ),
293+ VAL_BYTE ("iocs_profile" , NVME_FEAT_FID_IOCS_PROFILE ),
294+ VAL_BYTE ("spinup_control" , NVME_FEAT_FID_SPINUP_CONTROL ),
295+ VAL_BYTE ("power_loss_signal" , NVME_FEAT_FID_POWER_LOSS_SIGNAL ),
296+ VAL_BYTE ("perf_characteristics" , NVME_FEAT_FID_PERF_CHARACTERISTICS ),
297+ VAL_BYTE ("fdp" , NVME_FEAT_FID_FDP ),
298+ VAL_BYTE ("fdp_events" , NVME_FEAT_FID_FDP_EVENTS ),
299+ VAL_BYTE ("ns_admin_label" , NVME_FEAT_FID_NS_ADMIN_LABEL ),
300+ VAL_BYTE ("key_value" , NVME_FEAT_FID_KEY_VALUE ),
301+ VAL_BYTE ("ctrl_data_queue" , NVME_FEAT_FID_CTRL_DATA_QUEUE ),
302+ VAL_BYTE ("emb_mgmt_ctrl_addr" , NVME_FEAT_FID_EMB_MGMT_CTRL_ADDR ),
303+ VAL_BYTE ("host_mgmt_agent_addr" , NVME_FEAT_FID_HOST_MGMT_AGENT_ADDR ),
304+ VAL_BYTE ("enh_ctrl_metadata" , NVME_FEAT_FID_ENH_CTRL_METADATA ),
305+ VAL_BYTE ("ctrl_metadata" , NVME_FEAT_FID_CTRL_METADATA ),
306+ VAL_BYTE ("ns_metadata" , NVME_FEAT_FID_NS_METADATA ),
307+ VAL_BYTE ("sw_progress" , NVME_FEAT_FID_SW_PROGRESS ),
308+ VAL_BYTE ("host_id" , NVME_FEAT_FID_HOST_ID ),
309+ VAL_BYTE ("resv_mask" , NVME_FEAT_FID_RESV_MASK ),
310+ VAL_BYTE ("resv_persist" , NVME_FEAT_FID_RESV_PERSIST ),
311+ VAL_BYTE ("write_protect" , NVME_FEAT_FID_WRITE_PROTECT ),
312+ VAL_BYTE ("bp_write_protect" , NVME_FEAT_FID_BP_WRITE_PROTECT ),
313+ VAL_END ()
314+ };
315+
268316const char * nvme_strerror (int errnum )
269317{
270318 if (errnum >= ENVME_CONNECT_RESOLVE )
@@ -4874,7 +4922,7 @@ static int get_feature(int argc, char **argv, struct command *cmd,
48744922 };
48754923
48764924 NVME_ARGS (opts ,
4877- OPT_BYTE ("feature-id" , 'f' , & cfg .feature_id , feature_id ),
4925+ OPT_BYTE ("feature-id" , 'f' , & cfg .feature_id , feature_id , feature_name ),
48784926 OPT_UINT ("namespace-id" , 'n' , & cfg .namespace_id , namespace_id_desired ),
48794927 OPT_BYTE ("sel" , 's' , & cfg .sel , sel ),
48804928 OPT_UINT ("data-len" , 'l' , & cfg .data_len , buf_len ),
@@ -6658,7 +6706,7 @@ static int set_feature(int argc, char **argv, struct command *cmd, struct plugin
66586706
66596707 NVME_ARGS (opts ,
66606708 OPT_UINT ("namespace-id" , 'n' , & cfg .namespace_id , namespace_desired ),
6661- OPT_BYTE ("feature-id" , 'f' , & cfg .feature_id , feature_id ),
6709+ OPT_BYTE ("feature-id" , 'f' , & cfg .feature_id , feature_id , feature_name ),
66626710 OPT_SUFFIX ("value" , 'V' , & cfg .value , value ),
66636711 OPT_UINT ("cdw12" , 'c' , & cfg .cdw12 , cdw12 ),
66646712 OPT_BYTE ("uuid-index" , 'U' , & cfg .uuid_index , uuid_index_specify ),
0 commit comments