Message ID | 20230421092321.12741-6-dave@stgolabs.net |
---|---|
State | Accepted |
Commit | c5c39217ff49ffb8494a671c9521c43006f87f1a |
Headers | show |
Series | cxl: Background cmds and device sanitation | expand |
On Fri, 21 Apr 2023 02:23:19 -0700 Davidlohr Bueso <dave@stgolabs.net> wrote: > Add support to emulate the "Sanitize" operation, without > incurring in the background. > > Reviewed-by: Dave Jiang <dave.jiang@intel.com> > Signed-off-by: Davidlohr Bueso <dave@stgolabs.net> > --- > tools/testing/cxl/test/mem.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff --git a/tools/testing/cxl/test/mem.c b/tools/testing/cxl/test/mem.c > index 9263b04d35f7..d4466cb27947 100644 > --- a/tools/testing/cxl/test/mem.c > +++ b/tools/testing/cxl/test/mem.c > @@ -497,6 +497,28 @@ static int mock_partition_info(struct cxl_dev_state *cxlds, > return 0; > } > > +static int mock_sanitize(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd) > +{ > + struct cxl_mockmem_data *mdata = dev_get_drvdata(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; /* assume less than 2 secs, no bg */ Boring ;) Otherwise this looks fine to me though note I'm far from an expert on the test modules. Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > +} > + > static int mock_get_security_state(struct cxl_dev_state *cxlds, > struct cxl_mbox_cmd *cmd) > { > @@ -924,6 +946,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_SANITIZE: > + rc = mock_sanitize(cxlds, cmd); > + break; > case CXL_MBOX_OP_GET_SECURITY_STATE: > rc = mock_get_security_state(cxlds, cmd); > break;
On Thu, 11 May 2023, Jonathan Cameron wrote: >On Fri, 21 Apr 2023 02:23:19 -0700 >Davidlohr Bueso <dave@stgolabs.net> wrote: > >> Add support to emulate the "Sanitize" operation, without >> incurring in the background. >> >> Reviewed-by: Dave Jiang <dave.jiang@intel.com> >> Signed-off-by: Davidlohr Bueso <dave@stgolabs.net> >> --- >> tools/testing/cxl/test/mem.c | 25 +++++++++++++++++++++++++ >> 1 file changed, 25 insertions(+) >> >> diff --git a/tools/testing/cxl/test/mem.c b/tools/testing/cxl/test/mem.c >> index 9263b04d35f7..d4466cb27947 100644 >> --- a/tools/testing/cxl/test/mem.c >> +++ b/tools/testing/cxl/test/mem.c >> @@ -497,6 +497,28 @@ static int mock_partition_info(struct cxl_dev_state *cxlds, >> return 0; >> } >> >> +static int mock_sanitize(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd) >> +{ >> + struct cxl_mockmem_data *mdata = dev_get_drvdata(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; /* assume less than 2 secs, no bg */ > >Boring ;) Yes, but I made up for it in qemu :) Thanks, Davidlohr
diff --git a/tools/testing/cxl/test/mem.c b/tools/testing/cxl/test/mem.c index 9263b04d35f7..d4466cb27947 100644 --- a/tools/testing/cxl/test/mem.c +++ b/tools/testing/cxl/test/mem.c @@ -497,6 +497,28 @@ static int mock_partition_info(struct cxl_dev_state *cxlds, return 0; } +static int mock_sanitize(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd) +{ + struct cxl_mockmem_data *mdata = dev_get_drvdata(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; /* assume less than 2 secs, no bg */ +} + static int mock_get_security_state(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd) { @@ -924,6 +946,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_SANITIZE: + rc = mock_sanitize(cxlds, cmd); + break; case CXL_MBOX_OP_GET_SECURITY_STATE: rc = mock_get_security_state(cxlds, cmd); break;