cxl/test: Add mock test for set_timestamp
authorDavidlohr Bueso <dave@stgolabs.net>
Sun, 23 Apr 2023 22:12:31 +0000 (15:12 -0700)
committerDan Williams <dan.j.williams@intel.com>
Mon, 24 Apr 2023 18:31:02 +0000 (11:31 -0700)
Support the command testing in a unit-test fashion.

Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Davidlohr Bueso <dave@stgolabs.net>
Link: https://lore.kernel.org/r/20230423221231.6357-1-dave@stgolabs.net
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
tools/testing/cxl/test/mem.c

index 0fd7e7b8b44ae355ae2cf6f0bd06eb5e9fc35bb3..ba572d03c6875b28fb1638237f98a3384d149c5c 100644 (file)
@@ -116,6 +116,7 @@ struct cxl_mockmem_data {
        int master_limit;
        struct mock_event_store mes;
        u8 event_buf[SZ_4K];
+       u64 timestamp;
 };
 
 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 = {
        }
 };
 
+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)
 {
        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 *
        int rc = -EIO;
 
        switch (cmd->opcode) {
+       case CXL_MBOX_OP_SET_TIMESTAMP:
+               rc = mock_set_timestamp(cxlds, cmd);
+               break;
        case CXL_MBOX_OP_GET_SUPPORTED_LOGS:
                rc = mock_gsl(cmd);
                break;
@@ -1232,6 +1252,10 @@ static int cxl_mock_mem_probe(struct platform_device *pdev)
        if (rc)
                return rc;
 
+       rc = cxl_set_timestamp(cxlds);
+       if (rc)
+               return rc;
+
        rc = cxl_dev_state_identify(cxlds);
        if (rc)
                return rc;