]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
scsi: cxlflash: Remove embedded CXL work structures
authorMatthew R. Ochs <mrochs@linux.vnet.ibm.com>
Wed, 3 Jan 2018 22:54:50 +0000 (16:54 -0600)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 11 Jan 2018 04:24:57 +0000 (23:24 -0500)
The CXL-specific work structure used to request the number of interrupts
currently resides as a nested member of both the context information and
hardware queue structures. It is used to cache values (specifically the
number of interrupts) required by the CXL layer when starting a context.

To facilitate staging that will ultimately allow the cxlflash core to
become agnostic of the underlying accelerator transport, remove these
embedded work structures.

Signed-off-by: Matthew R. Ochs <mrochs@linux.vnet.ibm.com>
Signed-off-by: Uma Krishnan <ukrishn@linux.vnet.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/cxlflash/common.h
drivers/scsi/cxlflash/main.c
drivers/scsi/cxlflash/superpipe.c
drivers/scsi/cxlflash/superpipe.h

index d2a180de7e6c6db8fe580337f31e8b2b1e302419..48df89f6f0b36d3afadd064b86c3fdc58870992b 100644 (file)
@@ -204,7 +204,6 @@ struct hwq {
         */
        struct afu *afu;
        void *ctx_cookie;
-       struct cxl_ioctl_start_work work;
        struct sisl_host_map __iomem *host_map;         /* MC host map */
        struct sisl_ctrl_map __iomem *ctrl_map;         /* MC control map */
        ctx_hndl_t ctx_hndl;    /* master's context handle */
index 3880d522368fc95ff87d65bb1298dcadb4896dd7..b6cadebbfa94d4e5d7412f91e84cf8745527b1df 100644 (file)
@@ -1611,9 +1611,7 @@ static int start_context(struct cxlflash_cfg *cfg, u32 index)
        struct hwq *hwq = get_hwq(cfg->afu, index);
        int rc = 0;
 
-       rc = cxl_start_context(hwq->ctx_cookie,
-                              hwq->work.work_element_descriptor,
-                              NULL);
+       rc = cxl_start_context(hwq->ctx_cookie, 0, NULL);
 
        dev_dbg(dev, "%s: returning rc=%d\n", __func__, rc);
        return rc;
index ecfa5532ef186064c29200f690d297a3ddf7e0bb..51f67dcca90a0fd3890cb3d988c7c82a2197322f 100644 (file)
@@ -1309,7 +1309,7 @@ static int cxlflash_disk_attach(struct scsi_device *sdev,
        struct afu *afu = cfg->afu;
        struct llun_info *lli = sdev->hostdata;
        struct glun_info *gli = lli->parent;
-       struct cxl_ioctl_start_work *work;
+       struct cxl_ioctl_start_work work = { 0 };
        struct ctx_info *ctxi = NULL;
        struct lun_access *lun_access = NULL;
        int rc = 0;
@@ -1405,11 +1405,10 @@ static int cxlflash_disk_attach(struct scsi_device *sdev,
                goto err;
        }
 
-       work = &ctxi->work;
-       work->num_interrupts = irqs;
-       work->flags = CXL_START_WORK_NUM_IRQS;
+       work.num_interrupts = irqs;
+       work.flags = CXL_START_WORK_NUM_IRQS;
 
-       rc = cxl_start_work(ctx, work);
+       rc = cxl_start_work(ctx, &work);
        if (unlikely(rc)) {
                dev_dbg(dev, "%s: Could not start context rc=%d\n",
                        __func__, rc);
@@ -1534,6 +1533,7 @@ static int recover_context(struct cxlflash_cfg *cfg,
        struct file *file;
        void *ctx;
        struct afu *afu = cfg->afu;
+       struct cxl_ioctl_start_work work = { 0 };
 
        ctx = cxl_dev_context_init(cfg->dev);
        if (IS_ERR_OR_NULL(ctx)) {
@@ -1543,7 +1543,10 @@ static int recover_context(struct cxlflash_cfg *cfg,
                goto out;
        }
 
-       rc = cxl_start_work(ctx, &ctxi->work);
+       work.num_interrupts = ctxi->irqs;
+       work.flags = CXL_START_WORK_NUM_IRQS;
+
+       rc = cxl_start_work(ctx, &work);
        if (unlikely(rc)) {
                dev_dbg(dev, "%s: Could not start context rc=%d\n",
                        __func__, rc);
index b761293fbc01892afb2e7c1b3595e3c17533a7f8..35c3cbf83fb54e5f51c78594a63b5b72536d9a31 100644 (file)
@@ -96,7 +96,6 @@ struct ctx_info {
        struct llun_info **rht_lun;       /* Mapping of RHT entries to LUNs */
        u8 *rht_needs_ws;       /* User-desired write-same function per RHTE */
 
-       struct cxl_ioctl_start_work work;
        u64 ctxid;
        u64 irqs; /* Number of interrupts requested for context */
        pid_t pid;