Message ID | 20250219062832.237881-5-dave@stgolabs.net |
---|---|
State | Superseded |
Headers | show |
Series | cxl: Dirty shutdown followups | expand |
On 2/18/25 11:28 PM, Davidlohr Bueso wrote: > Add support to emulate the CXL Set Shutdown State operation. > > Reviewed-by: Dave Jiang <dave.jiang@intel.com> > Signed-off-by: Davidlohr Bueso <dave@stgolabs.net> > --- > tools/testing/cxl/test/mem.c | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) > > diff --git a/tools/testing/cxl/test/mem.c b/tools/testing/cxl/test/mem.c > index 495199238335..832680a87c73 100644 > --- a/tools/testing/cxl/test/mem.c > +++ b/tools/testing/cxl/test/mem.c > @@ -65,6 +65,10 @@ static struct cxl_cel_entry mock_cel[] = { > .opcode = cpu_to_le16(CXL_MBOX_OP_GET_HEALTH_INFO), > .effect = CXL_CMD_EFFECT_NONE, > }, > + { > + .opcode = cpu_to_le16(CXL_MBOX_OP_SET_SHUTDOWN_STATE), > + .effect = POLICY_CHANGE_IMMEDIATE, > + }, > { > .opcode = cpu_to_le16(CXL_MBOX_OP_GET_POISON), > .effect = CXL_CMD_EFFECT_NONE, > @@ -161,6 +165,7 @@ struct cxl_mockmem_data { > u8 event_buf[SZ_4K]; > u64 timestamp; > unsigned long sanitize_timeout; > + int shutdown_state; Should be u8? DJ > }; > > 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) > return 0; > } > > +static int mock_set_shutdown_state(struct cxl_mockmem_data *mdata, > + struct cxl_mbox_cmd *cmd) > +{ > + struct cxl_mbox_set_shutdown_state_in *ss = cmd->payload_in; > + > + if (cmd->size_in != sizeof(*ss)) > + return -EINVAL; > + > + if (cmd->size_out != 0) > + return -EINVAL; > + > + mdata->shutdown_state = ss->state; > + return 0; > +} > + > static struct mock_poison { > struct cxl_dev_state *cxlds; > u64 dpa; > @@ -1421,6 +1441,9 @@ static int cxl_mock_mbox_send(struct cxl_mailbox *cxl_mbox, > case CXL_MBOX_OP_PASSPHRASE_SECURE_ERASE: > rc = mock_passphrase_secure_erase(mdata, cmd); > break; > + case CXL_MBOX_OP_SET_SHUTDOWN_STATE: > + rc = mock_set_shutdown_state(mdata, cmd); > + break; > case CXL_MBOX_OP_GET_POISON: > rc = mock_get_poison(cxlds, cmd); > break;
On 2/19/2025 2:28 PM, Davidlohr Bueso wrote: > Add support to emulate the CXL Set Shutdown State operation. > > Reviewed-by: Dave Jiang <dave.jiang@intel.com> > Signed-off-by: Davidlohr Bueso <dave@stgolabs.net> Reviewed-by: Li Ming <ming.li@zohomail.com>
diff --git a/tools/testing/cxl/test/mem.c b/tools/testing/cxl/test/mem.c index 495199238335..832680a87c73 100644 --- a/tools/testing/cxl/test/mem.c +++ b/tools/testing/cxl/test/mem.c @@ -65,6 +65,10 @@ static struct cxl_cel_entry mock_cel[] = { .opcode = cpu_to_le16(CXL_MBOX_OP_GET_HEALTH_INFO), .effect = CXL_CMD_EFFECT_NONE, }, + { + .opcode = cpu_to_le16(CXL_MBOX_OP_SET_SHUTDOWN_STATE), + .effect = POLICY_CHANGE_IMMEDIATE, + }, { .opcode = cpu_to_le16(CXL_MBOX_OP_GET_POISON), .effect = CXL_CMD_EFFECT_NONE, @@ -161,6 +165,7 @@ struct cxl_mockmem_data { u8 event_buf[SZ_4K]; u64 timestamp; unsigned long sanitize_timeout; + int shutdown_state; }; 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) return 0; } +static int mock_set_shutdown_state(struct cxl_mockmem_data *mdata, + struct cxl_mbox_cmd *cmd) +{ + struct cxl_mbox_set_shutdown_state_in *ss = cmd->payload_in; + + if (cmd->size_in != sizeof(*ss)) + return -EINVAL; + + if (cmd->size_out != 0) + return -EINVAL; + + mdata->shutdown_state = ss->state; + return 0; +} + static struct mock_poison { struct cxl_dev_state *cxlds; u64 dpa; @@ -1421,6 +1441,9 @@ static int cxl_mock_mbox_send(struct cxl_mailbox *cxl_mbox, case CXL_MBOX_OP_PASSPHRASE_SECURE_ERASE: rc = mock_passphrase_secure_erase(mdata, cmd); break; + case CXL_MBOX_OP_SET_SHUTDOWN_STATE: + rc = mock_set_shutdown_state(mdata, cmd); + break; case CXL_MBOX_OP_GET_POISON: rc = mock_get_poison(cxlds, cmd); break;