mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 19:13:47 +02:00
nvme: add FDP definitions
Add the config feature result, config log page, and management receive commands needed for FDP. Partially based on a patch from Kanchan Joshi <joshi.k@samsung.com>. Reviewed-by: Hannes Reinecke <hare@suse.de> Reviewed-by: Nitesh Shetty <nj.shetty@samsung.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Keith Busch <kbusch@kernel.org> Signed-off-by: Kanchan Joshi <joshi.k@samsung.com> Link: https://lore.kernel.org/r/20250506121732.8211-10-joshi.k@samsung.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
7a044d34b1
commit
ee203d3d86
|
|
@ -303,6 +303,7 @@ enum nvme_ctrl_attr {
|
|||
NVME_CTRL_ATTR_TBKAS = (1 << 6),
|
||||
NVME_CTRL_ATTR_ELBAS = (1 << 15),
|
||||
NVME_CTRL_ATTR_RHII = (1 << 18),
|
||||
NVME_CTRL_ATTR_FDPS = (1 << 19),
|
||||
};
|
||||
|
||||
struct nvme_id_ctrl {
|
||||
|
|
@ -689,6 +690,44 @@ struct nvme_rotational_media_log {
|
|||
__u8 rsvd24[488];
|
||||
};
|
||||
|
||||
struct nvme_fdp_config {
|
||||
__u8 flags;
|
||||
#define FDPCFG_FDPE (1U << 0)
|
||||
__u8 fdpcidx;
|
||||
__le16 reserved;
|
||||
};
|
||||
|
||||
struct nvme_fdp_ruh_desc {
|
||||
__u8 ruht;
|
||||
__u8 reserved[3];
|
||||
};
|
||||
|
||||
struct nvme_fdp_config_desc {
|
||||
__le16 dsze;
|
||||
__u8 fdpa;
|
||||
__u8 vss;
|
||||
__le32 nrg;
|
||||
__le16 nruh;
|
||||
__le16 maxpids;
|
||||
__le32 nns;
|
||||
__le64 runs;
|
||||
__le32 erutl;
|
||||
__u8 rsvd28[36];
|
||||
struct nvme_fdp_ruh_desc ruhs[];
|
||||
};
|
||||
|
||||
struct nvme_fdp_config_log {
|
||||
__le16 numfdpc;
|
||||
__u8 ver;
|
||||
__u8 rsvd3;
|
||||
__le32 sze;
|
||||
__u8 rsvd8[8];
|
||||
/*
|
||||
* This is followed by variable number of nvme_fdp_config_desc
|
||||
* structures, but sparse doesn't like nested variable sized arrays.
|
||||
*/
|
||||
};
|
||||
|
||||
struct nvme_smart_log {
|
||||
__u8 critical_warning;
|
||||
__u8 temperature[2];
|
||||
|
|
@ -915,6 +954,7 @@ enum nvme_opcode {
|
|||
nvme_cmd_resv_register = 0x0d,
|
||||
nvme_cmd_resv_report = 0x0e,
|
||||
nvme_cmd_resv_acquire = 0x11,
|
||||
nvme_cmd_io_mgmt_recv = 0x12,
|
||||
nvme_cmd_resv_release = 0x15,
|
||||
nvme_cmd_zone_mgmt_send = 0x79,
|
||||
nvme_cmd_zone_mgmt_recv = 0x7a,
|
||||
|
|
@ -936,6 +976,7 @@ enum nvme_opcode {
|
|||
nvme_opcode_name(nvme_cmd_resv_register), \
|
||||
nvme_opcode_name(nvme_cmd_resv_report), \
|
||||
nvme_opcode_name(nvme_cmd_resv_acquire), \
|
||||
nvme_opcode_name(nvme_cmd_io_mgmt_recv), \
|
||||
nvme_opcode_name(nvme_cmd_resv_release), \
|
||||
nvme_opcode_name(nvme_cmd_zone_mgmt_send), \
|
||||
nvme_opcode_name(nvme_cmd_zone_mgmt_recv), \
|
||||
|
|
@ -1087,6 +1128,7 @@ enum {
|
|||
NVME_RW_PRINFO_PRCHK_GUARD = 1 << 12,
|
||||
NVME_RW_PRINFO_PRACT = 1 << 13,
|
||||
NVME_RW_DTYPE_STREAMS = 1 << 4,
|
||||
NVME_RW_DTYPE_DPLCMT = 2 << 4,
|
||||
NVME_WZ_DEAC = 1 << 9,
|
||||
};
|
||||
|
||||
|
|
@ -1174,6 +1216,38 @@ struct nvme_zone_mgmt_recv_cmd {
|
|||
__le32 cdw14[2];
|
||||
};
|
||||
|
||||
struct nvme_io_mgmt_recv_cmd {
|
||||
__u8 opcode;
|
||||
__u8 flags;
|
||||
__u16 command_id;
|
||||
__le32 nsid;
|
||||
__le64 rsvd2[2];
|
||||
union nvme_data_ptr dptr;
|
||||
__u8 mo;
|
||||
__u8 rsvd11;
|
||||
__u16 mos;
|
||||
__le32 numd;
|
||||
__le32 cdw12[4];
|
||||
};
|
||||
|
||||
enum {
|
||||
NVME_IO_MGMT_RECV_MO_RUHS = 1,
|
||||
};
|
||||
|
||||
struct nvme_fdp_ruh_status_desc {
|
||||
__le16 pid;
|
||||
__le16 ruhid;
|
||||
__le32 earutr;
|
||||
__le64 ruamw;
|
||||
__u8 reserved[16];
|
||||
};
|
||||
|
||||
struct nvme_fdp_ruh_status {
|
||||
__u8 rsvd0[14];
|
||||
__le16 nruhsd;
|
||||
struct nvme_fdp_ruh_status_desc ruhsd[];
|
||||
};
|
||||
|
||||
enum {
|
||||
NVME_ZRA_ZONE_REPORT = 0,
|
||||
NVME_ZRASF_ZONE_REPORT_ALL = 0,
|
||||
|
|
@ -1309,6 +1383,7 @@ enum {
|
|||
NVME_FEAT_PLM_WINDOW = 0x14,
|
||||
NVME_FEAT_HOST_BEHAVIOR = 0x16,
|
||||
NVME_FEAT_SANITIZE = 0x17,
|
||||
NVME_FEAT_FDP = 0x1d,
|
||||
NVME_FEAT_SW_PROGRESS = 0x80,
|
||||
NVME_FEAT_HOST_ID = 0x81,
|
||||
NVME_FEAT_RESV_MASK = 0x82,
|
||||
|
|
@ -1329,6 +1404,7 @@ enum {
|
|||
NVME_LOG_ANA = 0x0c,
|
||||
NVME_LOG_FEATURES = 0x12,
|
||||
NVME_LOG_RMI = 0x16,
|
||||
NVME_LOG_FDP_CONFIGS = 0x20,
|
||||
NVME_LOG_DISC = 0x70,
|
||||
NVME_LOG_RESERVATION = 0x80,
|
||||
NVME_FWACT_REPL = (0 << 3),
|
||||
|
|
@ -1923,6 +1999,7 @@ struct nvme_command {
|
|||
struct nvmf_auth_receive_command auth_receive;
|
||||
struct nvme_dbbuf dbbuf;
|
||||
struct nvme_directive_cmd directive;
|
||||
struct nvme_io_mgmt_recv_cmd imr;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user