Skip to content

Commit d678aa0

Browse files
NateThorntonigaw
authored andcommitted
types: Add TP4159 PCIe Infrastructure for Live Migration definitions
Adds definitions from the newly minted TP4159 PCIe Infrastructure for Live Migration specification. Signed-off-by: Nate Thornton <[email protected]>
1 parent 2d549ed commit d678aa0

2 files changed

Lines changed: 78 additions & 1 deletion

File tree

src/nvme/types.h

Lines changed: 73 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1360,6 +1360,39 @@ struct nvme_id_psd {
13601360
* total number of outstanding I/O commands across all I/O queues
13611361
* on the controller for optimal operation.
13621362
* @rsvd568: Reserved
1363+
* @cmmrtd: Controller Maximum Memory Range Tracking Descriptors indicates
1364+
* the maximum number of Memory Range Tracking Descriptors the
1365+
* controller supports.
1366+
* @nmmrtd: NVM Subsystem Maximum Memory Range Tracking Descriptors
1367+
* indicates the maximum number of Memory Range Tracking Descriptors
1368+
* the NVM subsystem supports.
1369+
* @minmrtg: Minimum Memory Range Tracking Granularity indicates the minimum
1370+
* value supported in the Requested Memory Range Tracking
1371+
* Granularity (RMRTG) field of the Track Memory Ranges data
1372+
* structure.
1373+
* @maxmrtg: Maximum Memory Range Tracking Granularity indicates the maximum
1374+
* value supported in the Requested Memory Range Tracking
1375+
* Granularity (RMRTG) field of the Track Memory Ranges data
1376+
* structure.
1377+
* @trattr: Tracking Attributes indicates supported attributes for the
1378+
* Track Send command and Track Receive command.
1379+
* @rsvd577: Reserved
1380+
* @mcudmq: Maximum Controller User Data Migration Queues indicates the
1381+
* maximum number of User Data Migration Queues supported by the
1382+
* controller.
1383+
* @mnsudmq: Maximum NVM Subsystem User Data Migration Queues indicates the
1384+
* maximum number of User Data Migration Queues supported by the NVM
1385+
* subsystem.
1386+
* @mcmr: Maximum CDQ Memory Ranges indicates the maximum number of
1387+
* memory ranges allowed to be specified by the PRP1 field of a
1388+
* Controller Data Queue command.
1389+
* @nmcmr: NVM Subsystem Maximum CDQ Memory Ranges indicates the maximum
1390+
* number of memory ranges for all Controller Data Queues in the
1391+
* NVM subsystem.
1392+
* @mcdqpc: Maximum Controller Data Queue PRP Count indicates the maximum
1393+
* number of PRPs allowed to be specified in the PRP list in the
1394+
* Controller Data Queue command.
1395+
* @rsvd588: Reserved
13631396
* @subnqn: NVM Subsystem NVMe Qualified Name, UTF-8 null terminated string
13641397
* @rsvd1024: Reserved
13651398
* @ioccsz: I/O Queue Command Capsule Supported Size, defines the maximum
@@ -1466,7 +1499,19 @@ struct nvme_id_ctrl {
14661499
__u8 maxdna[16];
14671500
__le32 maxcna;
14681501
__le32 oaqd;
1469-
__u8 rsvd568[200];
1502+
__u8 rsvd568[2];
1503+
__u16 cmmrtd;
1504+
__u16 nmmrtd;
1505+
__u8 minmrtg;
1506+
__u8 maxmrtg;
1507+
__u8 trattr;
1508+
__u8 rsvd577;
1509+
__u16 mcudmq;
1510+
__u16 mnsudmq;
1511+
__u16 mcmr;
1512+
__u16 nmcmr;
1513+
__u16 mcdqpc;
1514+
__u8 rsvd588[180];
14701515
char subnqn[NVME_NQN_LENGTH];
14711516
__u8 rsvd1024[768];
14721517

@@ -7082,6 +7127,20 @@ struct nvme_mi_vpd_hdr {
70827127
* Originator field does not match the
70837128
* Host NQN used by the DDC to connect
70847129
* to the CDC.
7130+
* @NVME_SC_INVALID_CONTROLER_DATA_QUEUE: This error indicates that the
7131+
* specified Controller Data Queue
7132+
* Identifier is invalid for the controller
7133+
* processing the command.
7134+
* @NVME_SC_NOT_ENOUGH_RESOURCES: This error indicates that there is not
7135+
* enough resources in the controller to
7136+
* process the command.
7137+
* @NVME_SC_CONTROLLER_SUSPENDED: The operation requested is not allowed if
7138+
* the specified controller is suspended.
7139+
* @NVME_SC_CONTROLLER_NOT_SUSPENDED: The operation requested is not allowed if
7140+
* the specified controller is not
7141+
* suspended.
7142+
* @NVME_SC_CONTROLLER_DATA_QUEUE_FULL: The controller detected that a
7143+
* Controller Data Queue became full.
70857144
* @NVME_SC_BAD_ATTRIBUTES: Conflicting Dataset Management Attributes
70867145
* @NVME_SC_INVALID_PI: Invalid Protection Information
70877146
* @NVME_SC_READ_ONLY: Attempted Write to Read Only Range
@@ -7339,6 +7398,15 @@ enum nvme_status_field {
73397398
NVME_SC_REQSTD_FUNCTION_DISABLED = 0x33,
73407399
NVME_SC_ZONEGRP_ORIGINATOR_INVLD = 0x34,
73417400

7401+
/*
7402+
* Command Set Specific - Live Migration
7403+
*/
7404+
NVME_SC_INVALID_CONTROLER_DATA_QUEUE = 0x37,
7405+
NVME_SC_NOT_ENOUGH_RESOURCES = 0x38,
7406+
NVME_SC_CONTROLLER_SUSPENDED = 0x39,
7407+
NVME_SC_CONTROLLER_NOT_SUSPENDED = 0x3A,
7408+
NVME_SC_CONTROLLER_DATA_QUEUE_FULL = 0x3B,
7409+
73427410
/*
73437411
* I/O Command Set Specific - NVM commands:
73447412
*/
@@ -7617,6 +7685,9 @@ enum nvme_admin_opcode {
76177685
* @NVME_IDENTIFY_CNS_CSI_ID_NS_DATA_STRUCTURE: I/O Command Set specific ID Namespace
76187686
* Data Structure for Allocated Namespace ID
76197687
* @NVME_IDENTIFY_CNS_COMMAND_SET_STRUCTURE: Base Specification 2.0a section 5.17.2.21
7688+
* @NVME_IDENTIFY_CNS_SUPPORTED_CTRL_STATE_FORMATS: Supported Controller State Formats
7689+
* identifying the supported NVMe Controller
7690+
* State data structures
76207691
*/
76217692
enum nvme_identify_cns {
76227693
NVME_IDENTIFY_CNS_NS = 0x00,
@@ -7643,6 +7714,7 @@ enum nvme_identify_cns {
76437714
NVME_IDENTIFY_CNS_CSI_ALLOCATED_NS_LIST = 0x1A,
76447715
NVME_IDENTIFY_CNS_CSI_ID_NS_DATA_STRUCTURE = 0x1B,
76457716
NVME_IDENTIFY_CNS_COMMAND_SET_STRUCTURE = 0x1C,
7717+
NVME_IDENTIFY_CNS_SUPPORTED_CTRL_STATE_FORMATS = 0x20,
76467718
};
76477719

76487720
/**

src/nvme/util.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,11 @@ static const char * const cmd_spec_status[] = {
286286
[NVME_SC_INSUFFICIENT_DISC_RES] = "Discovery Info entries exceed Discovery Controller's capacity",
287287
[NVME_SC_REQSTD_FUNCTION_DISABLED] = "Fabric Zoning is not enabled on the CDC",
288288
[NVME_SC_ZONEGRP_ORIGINATOR_INVLD] = "The NQN contained in the ZoneGroup Originator field does not match the Host NQN used by the DDC to connect to the CDC",
289+
[NVME_SC_INVALID_CONTROLER_DATA_QUEUE] = "Invalid Controller Data Queue",
290+
[NVME_SC_NOT_ENOUGH_RESOURCES] = "Not Enough Resources",
291+
[NVME_SC_CONTROLLER_SUSPENDED] = "Controller Suspended: Operation failed because the controller is currently in a suspended state",
292+
[NVME_SC_CONTROLLER_NOT_SUSPENDED] = "Controller Not Suspended: Operation failed because the controller is not in a suspended state",
293+
[NVME_SC_CONTROLLER_DATA_QUEUE_FULL] = "Controller Data Queue Full",
289294
};
290295

291296
static const char * const nvm_status[] = {

0 commit comments

Comments
 (0)