Message ID | 20221206011501.464916-4-dave@stgolabs.net |
---|---|
State | New, archived |
Headers | show |
Series | cxl: BG operations and device sanitation | expand |
Davidlohr Bueso wrote: > Add support to emulate a CXL mem device support the "Secure Erase" > operation. > > Signed-off-by: Davidlohr Bueso <dave@stgolabs.net> > --- > tools/testing/cxl/test/mem.c | 27 +++++++++++++++++++++++++++ > 1 file changed, 27 insertions(+) > > diff --git a/tools/testing/cxl/test/mem.c b/tools/testing/cxl/test/mem.c > index 35d9ad04e0d6..0f3101f65901 100644 > --- a/tools/testing/cxl/test/mem.c > +++ b/tools/testing/cxl/test/mem.c > @@ -149,6 +149,30 @@ static int mock_partition_info(struct cxl_dev_state *cxlds, > return 0; > } > > +static int mock_secure_erase(struct cxl_dev_state *cxlds, > + struct cxl_mbox_cmd *cmd) > +{ > + struct cxl_mockmem_data *mdata = dev_get_platdata(cxlds->dev); > + > + if (cmd->size_in != 0) > + return -EINVAL; > + > + if (cmd->size_out != 0) > + return -EINVAL; > + > + if (mdata->security_state & CXL_PMEM_SEC_STATE_USER_PASS_SET) { > + cmd->return_code = CXL_MBOX_CMD_RC_SECURITY; > + return -ENXIO; > + } > + > + if (mdata->security_state & CXL_PMEM_SEC_STATE_LOCKED) { > + cmd->return_code = CXL_MBOX_CMD_RC_SECURITY; > + return -ENXIO; > + } > + > + return 0; > +} > + > static int mock_get_security_state(struct cxl_dev_state *cxlds, > struct cxl_mbox_cmd *cmd) > { > @@ -567,6 +591,9 @@ static int cxl_mock_mbox_send(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd * > case CXL_MBOX_OP_GET_HEALTH_INFO: > rc = mock_health_info(cxlds, cmd); > break; > + case CXL_MBOX_OP_SECURE_ERASE: > + rc = mock_secure_erase(cxlds, cmd); > + break; Would be nice to have a sanitize mock that goes to sleep for 10 seconds to test how command queueing is handled. > case CXL_MBOX_OP_GET_SECURITY_STATE: > rc = mock_get_security_state(cxlds, cmd); > break; > -- > 2.38.1 >
diff --git a/tools/testing/cxl/test/mem.c b/tools/testing/cxl/test/mem.c index 35d9ad04e0d6..0f3101f65901 100644 --- a/tools/testing/cxl/test/mem.c +++ b/tools/testing/cxl/test/mem.c @@ -149,6 +149,30 @@ static int mock_partition_info(struct cxl_dev_state *cxlds, return 0; } +static int mock_secure_erase(struct cxl_dev_state *cxlds, + struct cxl_mbox_cmd *cmd) +{ + struct cxl_mockmem_data *mdata = dev_get_platdata(cxlds->dev); + + if (cmd->size_in != 0) + return -EINVAL; + + if (cmd->size_out != 0) + return -EINVAL; + + if (mdata->security_state & CXL_PMEM_SEC_STATE_USER_PASS_SET) { + cmd->return_code = CXL_MBOX_CMD_RC_SECURITY; + return -ENXIO; + } + + if (mdata->security_state & CXL_PMEM_SEC_STATE_LOCKED) { + cmd->return_code = CXL_MBOX_CMD_RC_SECURITY; + return -ENXIO; + } + + return 0; +} + static int mock_get_security_state(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd) { @@ -567,6 +591,9 @@ static int cxl_mock_mbox_send(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd * case CXL_MBOX_OP_GET_HEALTH_INFO: rc = mock_health_info(cxlds, cmd); break; + case CXL_MBOX_OP_SECURE_ERASE: + rc = mock_secure_erase(cxlds, cmd); + break; case CXL_MBOX_OP_GET_SECURITY_STATE: rc = mock_get_security_state(cxlds, cmd); break;
Add support to emulate a CXL mem device support the "Secure Erase" operation. Signed-off-by: Davidlohr Bueso <dave@stgolabs.net> --- tools/testing/cxl/test/mem.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+)