From 8762353106c4376deabd76473e1bd7ba36dd529c Mon Sep 17 00:00:00 2001 From: "Matthew R. Ochs" Date: Wed, 3 Jan 2018 16:54:50 -0600 Subject: [PATCH] scsi: cxlflash: Remove embedded CXL work structures 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 Signed-off-by: Uma Krishnan Signed-off-by: Martin K. Petersen --- drivers/scsi/cxlflash/common.h | 1 - drivers/scsi/cxlflash/main.c | 4 +--- drivers/scsi/cxlflash/superpipe.c | 15 +++++++++------ drivers/scsi/cxlflash/superpipe.h | 1 - 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/drivers/scsi/cxlflash/common.h b/drivers/scsi/cxlflash/common.h index d2a180de7e6c..48df89f6f0b3 100644 --- a/drivers/scsi/cxlflash/common.h +++ b/drivers/scsi/cxlflash/common.h @@ -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 */ diff --git a/drivers/scsi/cxlflash/main.c b/drivers/scsi/cxlflash/main.c index 3880d522368f..b6cadebbfa94 100644 --- a/drivers/scsi/cxlflash/main.c +++ b/drivers/scsi/cxlflash/main.c @@ -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; diff --git a/drivers/scsi/cxlflash/superpipe.c b/drivers/scsi/cxlflash/superpipe.c index ecfa5532ef18..51f67dcca90a 100644 --- a/drivers/scsi/cxlflash/superpipe.c +++ b/drivers/scsi/cxlflash/superpipe.c @@ -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); diff --git a/drivers/scsi/cxlflash/superpipe.h b/drivers/scsi/cxlflash/superpipe.h index b761293fbc01..35c3cbf83fb5 100644 --- a/drivers/scsi/cxlflash/superpipe.h +++ b/drivers/scsi/cxlflash/superpipe.h @@ -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;