@@ -65,6 +65,10 @@ static struct cxl_cel_entry mock_cel[] = {
65
65
.opcode = cpu_to_le16 (CXL_MBOX_OP_GET_HEALTH_INFO ),
66
66
.effect = CXL_CMD_EFFECT_NONE ,
67
67
},
68
+ {
69
+ .opcode = cpu_to_le16 (CXL_MBOX_OP_SET_SHUTDOWN_STATE ),
70
+ .effect = POLICY_CHANGE_IMMEDIATE ,
71
+ },
68
72
{
69
73
.opcode = cpu_to_le16 (CXL_MBOX_OP_GET_POISON ),
70
74
.effect = CXL_CMD_EFFECT_NONE ,
@@ -161,6 +165,7 @@ struct cxl_mockmem_data {
161
165
u8 event_buf [SZ_4K ];
162
166
u64 timestamp ;
163
167
unsigned long sanitize_timeout ;
168
+ u8 shutdown_state ;
164
169
};
165
170
166
171
static struct mock_event_log * event_find_log (struct device * dev , int log_type )
@@ -1088,6 +1093,21 @@ static int mock_health_info(struct cxl_mbox_cmd *cmd)
1088
1093
return 0 ;
1089
1094
}
1090
1095
1096
+ static int mock_set_shutdown_state (struct cxl_mockmem_data * mdata ,
1097
+ struct cxl_mbox_cmd * cmd )
1098
+ {
1099
+ struct cxl_mbox_set_shutdown_state_in * ss = cmd -> payload_in ;
1100
+
1101
+ if (cmd -> size_in != sizeof (* ss ))
1102
+ return - EINVAL ;
1103
+
1104
+ if (cmd -> size_out != 0 )
1105
+ return - EINVAL ;
1106
+
1107
+ mdata -> shutdown_state = ss -> state ;
1108
+ return 0 ;
1109
+ }
1110
+
1091
1111
static struct mock_poison {
1092
1112
struct cxl_dev_state * cxlds ;
1093
1113
u64 dpa ;
@@ -1421,6 +1441,9 @@ static int cxl_mock_mbox_send(struct cxl_mailbox *cxl_mbox,
1421
1441
case CXL_MBOX_OP_PASSPHRASE_SECURE_ERASE :
1422
1442
rc = mock_passphrase_secure_erase (mdata , cmd );
1423
1443
break ;
1444
+ case CXL_MBOX_OP_SET_SHUTDOWN_STATE :
1445
+ rc = mock_set_shutdown_state (mdata , cmd );
1446
+ break ;
1424
1447
case CXL_MBOX_OP_GET_POISON :
1425
1448
rc = mock_get_poison (cxlds , cmd );
1426
1449
break ;
0 commit comments