Commit fd35fdcb authored by Davidlohr Bueso's avatar Davidlohr Bueso Committed by Dan Williams

cxl/test: Add mock test for set_timestamp

Support the command testing in a unit-test fashion.
Reviewed-by: default avatarIra Weiny <ira.weiny@intel.com>
Signed-off-by: default avatarDavidlohr Bueso <dave@stgolabs.net>
Link: https://lore.kernel.org/r/20230423221231.6357-1-dave@stgolabs.netSigned-off-by: default avatarDan Williams <dan.j.williams@intel.com>
parent bfe58458
...@@ -116,6 +116,7 @@ struct cxl_mockmem_data { ...@@ -116,6 +116,7 @@ struct cxl_mockmem_data {
int master_limit; int master_limit;
struct mock_event_store mes; struct mock_event_store mes;
u8 event_buf[SZ_4K]; u8 event_buf[SZ_4K];
u64 timestamp;
}; };
static struct mock_event_log *event_find_log(struct device *dev, int log_type) static struct mock_event_log *event_find_log(struct device *dev, int log_type)
...@@ -379,6 +380,22 @@ struct cxl_event_mem_module mem_module = { ...@@ -379,6 +380,22 @@ struct cxl_event_mem_module mem_module = {
} }
}; };
static int mock_set_timestamp(struct cxl_dev_state *cxlds,
struct cxl_mbox_cmd *cmd)
{
struct cxl_mockmem_data *mdata = dev_get_drvdata(cxlds->dev);
struct cxl_mbox_set_timestamp_in *ts = cmd->payload_in;
if (cmd->size_in != sizeof(*ts))
return -EINVAL;
if (cmd->size_out != 0)
return -EINVAL;
mdata->timestamp = le64_to_cpu(ts->timestamp);
return 0;
}
static void cxl_mock_add_event_logs(struct mock_event_store *mes) static void cxl_mock_add_event_logs(struct mock_event_store *mes)
{ {
put_unaligned_le16(CXL_GMER_VALID_CHANNEL | CXL_GMER_VALID_RANK, put_unaligned_le16(CXL_GMER_VALID_CHANNEL | CXL_GMER_VALID_RANK,
...@@ -1103,6 +1120,9 @@ static int cxl_mock_mbox_send(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd * ...@@ -1103,6 +1120,9 @@ static int cxl_mock_mbox_send(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *
int rc = -EIO; int rc = -EIO;
switch (cmd->opcode) { switch (cmd->opcode) {
case CXL_MBOX_OP_SET_TIMESTAMP:
rc = mock_set_timestamp(cxlds, cmd);
break;
case CXL_MBOX_OP_GET_SUPPORTED_LOGS: case CXL_MBOX_OP_GET_SUPPORTED_LOGS:
rc = mock_gsl(cmd); rc = mock_gsl(cmd);
break; break;
...@@ -1232,6 +1252,10 @@ static int cxl_mock_mem_probe(struct platform_device *pdev) ...@@ -1232,6 +1252,10 @@ static int cxl_mock_mem_probe(struct platform_device *pdev)
if (rc) if (rc)
return rc; return rc;
rc = cxl_set_timestamp(cxlds);
if (rc)
return rc;
rc = cxl_dev_state_identify(cxlds); rc = cxl_dev_state_identify(cxlds);
if (rc) if (rc)
return rc; return rc;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment