From: Uma Krishnan <ukrishn@linux.vnet.ibm.com>
To: linux-scsi@vger.kernel.org,
James Bottomley <jejb@linux.vnet.ibm.com>,
"Martin K. Petersen" <martin.petersen@oracle.com>,
"Matthew R. Ochs" <mrochs@linux.vnet.ibm.com>,
"Manoj N. Kumar" <manoj@linux.vnet.ibm.com>
Cc: linuxppc-dev@lists.ozlabs.org,
Andrew Donnellan <andrew.donnellan@au1.ibm.com>,
Frederic Barrat <fbarrat@linux.vnet.ibm.com>,
Christophe Lombard <clombard@linux.vnet.ibm.com>
Subject: [PATCH v3 12/41] cxlflash: Use IDR to manage adapter contexts
Date: Mon, 26 Mar 2018 11:32:00 -0500 [thread overview]
Message-ID: <1522081920-57895-1-git-send-email-ukrishn@linux.vnet.ibm.com> (raw)
In-Reply-To: <1522081759-57431-1-git-send-email-ukrishn@linux.vnet.ibm.com>
A range of PASIDs are used as identifiers for the adapter contexts. These
contexts may be destroyed and created randomly. Use an IDR to keep track
of contexts that are in use and assign a unique identifier to new ones.
Signed-off-by: Uma Krishnan <ukrishn@linux.vnet.ibm.com>
Acked-by: Matthew R. Ochs <mrochs@linux.vnet.ibm.com>
---
drivers/scsi/cxlflash/ocxl_hw.c | 21 +++++++++++++++++++--
drivers/scsi/cxlflash/ocxl_hw.h | 2 ++
2 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/drivers/scsi/cxlflash/ocxl_hw.c b/drivers/scsi/cxlflash/ocxl_hw.c
index cbe4d93..e8864a1 100644
--- a/drivers/scsi/cxlflash/ocxl_hw.c
+++ b/drivers/scsi/cxlflash/ocxl_hw.c
@@ -12,6 +12,8 @@
* 2 of the License, or (at your option) any later version.
*/
+#include <linux/idr.h>
+
#include <misc/ocxl.h>
#include "backend.h"
@@ -60,14 +62,25 @@ static void *ocxlflash_dev_context_init(struct pci_dev *pdev, void *afu_cookie)
if (unlikely(!ctx)) {
dev_err(dev, "%s: Context allocation failed\n", __func__);
rc = -ENOMEM;
- goto err;
+ goto err1;
+ }
+
+ idr_preload(GFP_KERNEL);
+ rc = idr_alloc(&afu->idr, ctx, 0, afu->max_pasid, GFP_NOWAIT);
+ idr_preload_end();
+ if (unlikely(rc < 0)) {
+ dev_err(dev, "%s: idr_alloc failed rc=%d\n", __func__, rc);
+ goto err2;
}
+ ctx->pe = rc;
ctx->master = false;
ctx->hw_afu = afu;
out:
return ctx;
-err:
+err2:
+ kfree(ctx);
+err1:
ctx = ERR_PTR(rc);
goto out;
}
@@ -86,6 +99,7 @@ static int ocxlflash_release_context(void *ctx_cookie)
if (!ctx)
goto out;
+ idr_remove(&ctx->hw_afu->idr, ctx->pe);
kfree(ctx);
out:
return rc;
@@ -103,6 +117,7 @@ static void ocxlflash_destroy_afu(void *afu_cookie)
return;
ocxlflash_release_context(afu->ocxl_ctx);
+ idr_destroy(&afu->idr);
kfree(afu);
}
@@ -221,6 +236,7 @@ static void *ocxlflash_create_afu(struct pci_dev *pdev)
afu->pdev = pdev;
afu->dev = dev;
+ idr_init(&afu->idr);
rc = ocxlflash_config_fn(pdev, afu);
if (unlikely(rc)) {
@@ -248,6 +264,7 @@ static void *ocxlflash_create_afu(struct pci_dev *pdev)
out:
return afu;
err1:
+ idr_destroy(&afu->idr);
kfree(afu);
afu = NULL;
goto out;
diff --git a/drivers/scsi/cxlflash/ocxl_hw.h b/drivers/scsi/cxlflash/ocxl_hw.h
index f41ba0b..a5337b6 100644
--- a/drivers/scsi/cxlflash/ocxl_hw.h
+++ b/drivers/scsi/cxlflash/ocxl_hw.h
@@ -26,6 +26,7 @@ struct ocxl_hw_afu {
int afu_actag_base; /* AFU acTag base */
int afu_actag_enabled; /* AFU acTag number enabled */
+ struct idr idr; /* IDR to manage contexts */
int max_pasid; /* Maximum number of contexts */
bool is_present; /* Function has AFUs defined */
};
@@ -33,4 +34,5 @@ struct ocxl_hw_afu {
struct ocxlflash_context {
struct ocxl_hw_afu *hw_afu; /* HW AFU back pointer */
bool master; /* Whether this is a master context */
+ int pe; /* Process element */
};
--
2.1.0
next prev parent reply other threads:[~2018-03-26 16:32 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-26 16:29 [PATCH v3 00/41] cxlflash: OCXL transport support and miscellaneous fixes Uma Krishnan
2018-03-26 16:29 ` [PATCH v3 01/41] cxlflash: Preserve number of interrupts for master contexts Uma Krishnan
2018-03-26 16:30 ` [PATCH v3 02/41] cxlflash: Avoid clobbering context control register value Uma Krishnan
2018-03-26 16:30 ` [PATCH v3 03/41] cxlflash: Add argument identifier names Uma Krishnan
2018-03-26 16:30 ` [PATCH v3 04/41] cxlflash: Introduce OCXL backend Uma Krishnan
2018-03-26 16:31 ` [PATCH v3 05/41] cxlflash: Hardware AFU for OCXL Uma Krishnan
2018-03-26 16:31 ` [PATCH v3 06/41] cxlflash: Read host function configuration Uma Krishnan
2018-03-26 16:31 ` [PATCH v3 07/41] cxlflash: Setup function acTag range Uma Krishnan
2018-03-26 16:31 ` [PATCH v3 08/41] cxlflash: Read host AFU configuration Uma Krishnan
2018-03-26 16:31 ` [PATCH v3 09/41] cxlflash: Setup AFU acTag range Uma Krishnan
2018-03-26 16:31 ` [PATCH v3 10/41] cxlflash: Setup AFU PASID Uma Krishnan
2018-03-26 16:31 ` [PATCH v3 11/41] cxlflash: Adapter context support for OCXL Uma Krishnan
2018-03-26 16:32 ` Uma Krishnan [this message]
2018-03-26 16:32 ` [PATCH v3 13/41] cxlflash: Support adapter file descriptors " Uma Krishnan
2018-03-26 16:32 ` [PATCH v3 14/41] cxlflash: Support adapter context discovery Uma Krishnan
2018-03-26 16:32 ` [PATCH v3 15/41] cxlflash: Support image reload policy modification Uma Krishnan
2018-03-26 16:32 ` [PATCH v3 16/41] cxlflash: MMIO map the AFU Uma Krishnan
2018-03-26 16:32 ` [PATCH v3 17/41] cxlflash: Support starting an adapter context Uma Krishnan
2018-03-26 16:32 ` [PATCH v3 18/41] cxlflash: Support process specific mappings Uma Krishnan
2018-03-26 16:33 ` [PATCH v3 19/41] cxlflash: Support AFU state toggling Uma Krishnan
2018-03-26 16:33 ` [PATCH v3 20/41] cxlflash: Support reading adapter VPD data Uma Krishnan
2018-03-26 16:33 ` [PATCH v3 21/41] cxlflash: Setup function OCXL link Uma Krishnan
2018-03-26 16:33 ` [PATCH v3 22/41] cxlflash: Setup OCXL transaction layer Uma Krishnan
2018-03-26 16:33 ` [PATCH v3 23/41] cxlflash: Support process element lifecycle Uma Krishnan
2018-03-26 16:33 ` [PATCH v3 24/41] cxlflash: Support AFU interrupt management Uma Krishnan
2018-03-26 16:33 ` [PATCH v3 25/41] cxlflash: Support AFU interrupt mapping and registration Uma Krishnan
2018-03-26 16:33 ` [PATCH v3 26/41] cxlflash: Support starting user contexts Uma Krishnan
2018-03-26 16:34 ` [PATCH v3 27/41] cxlflash: Support adapter context polling Uma Krishnan
2018-03-26 16:34 ` [PATCH v3 28/41] cxlflash: Support adapter context reading Uma Krishnan
2018-03-26 16:34 ` [PATCH v3 29/41] cxlflash: Support adapter context mmap and release Uma Krishnan
2018-03-26 16:34 ` [PATCH v3 30/41] cxlflash: Support file descriptor mapping Uma Krishnan
2018-03-26 16:34 ` [PATCH v3 31/41] cxlflash: Introduce object handle fop Uma Krishnan
2018-03-26 16:34 ` [PATCH v3 32/41] cxlflash: Setup LISNs for user contexts Uma Krishnan
2018-03-26 16:34 ` [PATCH v3 33/41] cxlflash: Setup LISNs for master contexts Uma Krishnan
2018-03-26 16:34 ` [PATCH v3 34/41] cxlflash: Update synchronous interrupt status bits Uma Krishnan
2018-03-26 16:35 ` [PATCH v3 35/41] cxlflash: Introduce OCXL context state machine Uma Krishnan
2018-03-26 16:35 ` [PATCH v3 36/41] cxlflash: Register for translation errors Uma Krishnan
2018-03-26 16:35 ` [PATCH v3 37/41] cxlflash: Support AFU reset Uma Krishnan
2018-03-26 16:35 ` [PATCH v3 38/41] cxlflash: Enable OCXL operations Uma Krishnan
2018-03-26 16:35 ` [PATCH v3 39/41] cxlflash: Synchronize reset and remove ops Uma Krishnan
2018-03-28 14:43 ` Matthew R. Ochs
2018-03-26 16:35 ` [PATCH v3 40/41] cxlflash: Remove commmands from pending list on timeout Uma Krishnan
2018-03-28 14:50 ` Matthew R. Ochs
2018-03-26 16:35 ` [PATCH v3 41/41] cxlflash: Handle spurious interrupts Uma Krishnan
2018-03-28 15:03 ` Matthew R. Ochs
2018-03-28 21:34 ` [PATCH v3 00/41] cxlflash: OCXL transport support and miscellaneous fixes Martin K. Petersen
2018-03-29 18:35 ` Uma Krishnan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1522081920-57895-1-git-send-email-ukrishn@linux.vnet.ibm.com \
--to=ukrishn@linux.vnet.ibm.com \
--cc=andrew.donnellan@au1.ibm.com \
--cc=clombard@linux.vnet.ibm.com \
--cc=fbarrat@linux.vnet.ibm.com \
--cc=jejb@linux.vnet.ibm.com \
--cc=linux-scsi@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=manoj@linux.vnet.ibm.com \
--cc=martin.petersen@oracle.com \
--cc=mrochs@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).