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 06/38] cxlflash: Read host function configuration
Date: Thu, 22 Feb 2018 16:23:21 -0600 [thread overview]
Message-ID: <1519338201-52001-1-git-send-email-ukrishn@linux.vnet.ibm.com> (raw)
In-Reply-To: <1519338010-51782-1-git-send-email-ukrishn@linux.vnet.ibm.com>
Per the OpenCXL specification, the underlying host can have multiple AFUs
per function with each function supporting its own configuration. The host
function configuration is read on the initialization path to evaluate the
number of functions present and identify the features and configuration of
the functions present. This data is cached for use in later configuration
steps. Note that for the OCXL hardware supported by the cxlflash driver,
only one AFU per function is expected.
Signed-off-by: Uma Krishnan <ukrishn@linux.vnet.ibm.com>
---
drivers/scsi/cxlflash/ocxl_hw.c | 41 +++++++++++++++++++++++++++++++++++++++++
drivers/scsi/cxlflash/ocxl_hw.h | 2 ++
2 files changed, 43 insertions(+)
diff --git a/drivers/scsi/cxlflash/ocxl_hw.c b/drivers/scsi/cxlflash/ocxl_hw.c
index 667cf77..a349ec6 100644
--- a/drivers/scsi/cxlflash/ocxl_hw.c
+++ b/drivers/scsi/cxlflash/ocxl_hw.c
@@ -32,6 +32,35 @@ static void ocxlflash_destroy_afu(void *afu_cookie)
}
/**
+ * ocxlflash_config_fn() - configure the host function
+ * @pdev: PCI device associated with the host.
+ * @afu: AFU associated with the host.
+ *
+ * Return: 0 on success, -errno on failure
+ */
+static int ocxlflash_config_fn(struct pci_dev *pdev, struct ocxl_hw_afu *afu)
+{
+ struct ocxl_fn_config *fcfg = &afu->fcfg;
+ struct device *dev = &pdev->dev;
+ int rc = 0;
+
+ /* Read DVSEC config of the function */
+ rc = ocxl_config_read_function(pdev, fcfg);
+ if (unlikely(rc)) {
+ dev_err(dev, "%s: ocxl_config_read_function failed rc=%d\n",
+ __func__, rc);
+ goto out;
+ }
+
+ /* Only one AFU per function is supported by ocxlflash */
+ if (fcfg->max_afu_index != 0)
+ dev_warn(dev, "%s: Unexpected AFU index value %d\n",
+ __func__, fcfg->max_afu_index);
+out:
+ return rc;
+}
+
+/**
* ocxlflash_create_afu() - create the AFU for OpenCXL
* @pdev: PCI device associated with the host.
*
@@ -41,6 +70,7 @@ static void *ocxlflash_create_afu(struct pci_dev *pdev)
{
struct device *dev = &pdev->dev;
struct ocxl_hw_afu *afu;
+ int rc;
afu = kzalloc(sizeof(*afu), GFP_KERNEL);
if (unlikely(!afu)) {
@@ -50,8 +80,19 @@ static void *ocxlflash_create_afu(struct pci_dev *pdev)
afu->pdev = pdev;
afu->dev = dev;
+
+ rc = ocxlflash_config_fn(pdev, afu);
+ if (unlikely(rc)) {
+ dev_err(dev, "%s: Function configuration failed rc=%d\n",
+ __func__, rc);
+ goto err1;
+ }
out:
return afu;
+err1:
+ kfree(afu);
+ afu = NULL;
+ goto out;
}
/* Backend ops to ocxlflash services */
diff --git a/drivers/scsi/cxlflash/ocxl_hw.h b/drivers/scsi/cxlflash/ocxl_hw.h
index 57eb53b..9c1b5347 100644
--- a/drivers/scsi/cxlflash/ocxl_hw.h
+++ b/drivers/scsi/cxlflash/ocxl_hw.h
@@ -16,4 +16,6 @@
struct ocxl_hw_afu {
struct pci_dev *pdev; /* PCI device */
struct device *dev; /* Generic device */
+
+ struct ocxl_fn_config fcfg; /* DVSEC config of the function */
};
--
2.1.0
next prev parent reply other threads:[~2018-02-22 22:23 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-22 22:20 [PATCH 00/38] cxlflash: OpenCXL transport support Uma Krishnan
2018-02-22 22:21 ` [PATCH 01/38] cxlflash: Preserve number of interrupts for master contexts Uma Krishnan
2018-02-22 22:22 ` [PATCH 02/38] cxlflash: Avoid clobbering context control register value Uma Krishnan
2018-02-22 22:22 ` [PATCH 03/38] cxlflash: Add argument identifier names Uma Krishnan
2018-02-22 22:22 ` [PATCH 04/38] cxlflash: Introduce OpenCXL backend Uma Krishnan
2018-02-23 4:28 ` Andrew Donnellan
2018-02-23 19:36 ` Uma Krishnan
2018-02-22 22:23 ` [PATCH 05/38] cxlflash: Hardware AFU for OpenCXL Uma Krishnan
2018-02-22 22:23 ` Uma Krishnan [this message]
2018-02-22 22:23 ` [PATCH 07/38] cxlflash: Setup function acTag range Uma Krishnan
2018-02-22 22:23 ` [PATCH 08/38] cxlflash: Read host AFU configuration Uma Krishnan
2018-02-22 22:23 ` [PATCH 09/38] cxlflash: Setup AFU acTag range Uma Krishnan
2018-02-22 22:24 ` [PATCH 10/38] cxlflash: Setup AFU PASID Uma Krishnan
2018-02-22 22:24 ` [PATCH 11/38] cxlflash: Adapter context support for OpenCXL Uma Krishnan
2018-02-22 22:24 ` [PATCH 12/38] cxlflash: Use IDR to manage adapter contexts Uma Krishnan
2018-02-22 22:24 ` [PATCH 13/38] cxlflash: Support adapter file descriptors for OpenCXL Uma Krishnan
2018-02-22 22:24 ` [PATCH 14/38] cxlflash: Support adapter context discovery Uma Krishnan
2018-02-22 22:24 ` [PATCH 15/38] cxlflash: Support image reload policy modification Uma Krishnan
2018-02-22 22:24 ` [PATCH 16/38] cxlflash: MMIO map the AFU Uma Krishnan
2018-02-22 22:25 ` [PATCH 17/38] cxlflash: Support starting an adapter context Uma Krishnan
2018-02-22 22:25 ` [PATCH 18/38] cxlflash: Support process specific mappings Uma Krishnan
2018-02-22 22:25 ` [PATCH 19/38] cxlflash: Support AFU state toggling Uma Krishnan
2018-02-22 22:25 ` [PATCH 20/38] cxlflash: Support reading adapter VPD data Uma Krishnan
2018-02-22 22:25 ` [PATCH 21/38] cxlflash: Setup function OpenCXL link Uma Krishnan
2018-02-22 22:26 ` [PATCH 22/38] cxlflash: Setup OpenCXL transaction layer Uma Krishnan
2018-02-22 22:26 ` [PATCH 23/38] cxlflash: Support process element lifecycle Uma Krishnan
2018-02-22 22:26 ` [PATCH 24/38] cxlflash: Support AFU interrupt management Uma Krishnan
2018-02-22 22:26 ` [PATCH 25/38] cxlflash: Support AFU interrupt mapping and registration Uma Krishnan
2018-02-22 22:26 ` [PATCH 26/38] cxlflash: Support starting user contexts Uma Krishnan
2018-02-22 22:27 ` [PATCH 27/38] cxlflash: Support adapter context polling Uma Krishnan
2018-02-22 22:27 ` [PATCH 28/38] cxlflash: Support adapter context reading Uma Krishnan
2018-02-22 22:27 ` [PATCH 29/38] cxlflash: Support adapter context mmap and release Uma Krishnan
2018-02-22 22:27 ` [PATCH 30/38] cxlflash: Support file descriptor mapping Uma Krishnan
2018-02-22 22:27 ` [PATCH 31/38] cxlflash: Introduce object handle fop Uma Krishnan
2018-02-22 22:27 ` [PATCH 32/38] cxlflash: Setup LISNs for user contexts Uma Krishnan
2018-02-22 22:27 ` [PATCH 33/38] cxlflash: Setup LISNs for master contexts Uma Krishnan
2018-02-22 22:28 ` [PATCH 34/38] cxlflash: Update synchronous interrupt status bits Uma Krishnan
2018-02-22 22:28 ` [PATCH 35/38] cxlflash: Introduce OCXL context state machine Uma Krishnan
2018-02-22 22:28 ` [PATCH 36/38] cxlflash: Register for translation errors Uma Krishnan
2018-02-22 22:28 ` [PATCH 37/38] cxlflash: Support AFU reset Uma Krishnan
2018-02-22 22:28 ` [PATCH 38/38] cxlflash: Enable OpenCXL operations Uma Krishnan
2018-02-23 4:13 ` [PATCH 00/38] cxlflash: OpenCXL transport support Andrew Donnellan
2018-02-23 18:05 ` Uma Krishnan
2018-02-23 19:38 ` Uma Krishnan
2018-02-26 14:43 ` Matthew R. Ochs
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=1519338201-52001-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).