|
Torsten Duwe |
2343cd |
From aa3c68634df86280087e8a4f2d3ba751eee3c6b4 Mon Sep 17 00:00:00 2001
|
|
Torsten Duwe |
2343cd |
From: Marco Chiappero <marco.chiappero@intel.com>
|
|
Torsten Duwe |
2343cd |
Date: Tue, 28 Sep 2021 12:44:39 +0100
|
|
Torsten Duwe |
2343cd |
Subject: [PATCH] crypto: qat - extract send and wait from
|
|
Torsten Duwe |
2343cd |
adf_vf2pf_request_version()
|
|
Torsten Duwe |
2343cd |
Git-commit: aa3c68634df86280087e8a4f2d3ba751eee3c6b4
|
|
Torsten Duwe |
2343cd |
Patch-mainline: v5.16-rc1
|
|
Torsten Duwe |
2343cd |
References: jsc#PED-1073
|
|
Torsten Duwe |
2343cd |
|
|
Torsten Duwe |
2343cd |
In the function adf_vf2pf_request_version(), the VF sends a request to
|
|
Torsten Duwe |
2343cd |
the PF and waits for a response before parsing and handling it.
|
|
Torsten Duwe |
2343cd |
|
|
Torsten Duwe |
2343cd |
Since this pattern will be used by other requests, define a new
|
|
Torsten Duwe |
2343cd |
function, adf_send_vf2pf_req(), that only deals with sending a VF2PF
|
|
Torsten Duwe |
2343cd |
request and waiting for a response.
|
|
Torsten Duwe |
2343cd |
|
|
Torsten Duwe |
2343cd |
Signed-off-by: Marco Chiappero <marco.chiappero@intel.com>
|
|
Torsten Duwe |
2343cd |
Co-developed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
|
|
Torsten Duwe |
2343cd |
Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
|
|
Torsten Duwe |
2343cd |
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
|
Torsten Duwe |
2343cd |
Signed-off-by: Torsten Duwe <duwe@suse.de>
|
|
Torsten Duwe |
2343cd |
|
|
Torsten Duwe |
2343cd |
---
|
|
Torsten Duwe |
2343cd |
drivers/crypto/qat/qat_common/adf_pf2vf_msg.c | 50 ++++++++++++++-----
|
|
Torsten Duwe |
2343cd |
1 file changed, 37 insertions(+), 13 deletions(-)
|
|
Torsten Duwe |
2343cd |
|
|
Torsten Duwe |
2343cd |
diff --git a/drivers/crypto/qat/qat_common/adf_pf2vf_msg.c b/drivers/crypto/qat/qat_common/adf_pf2vf_msg.c
|
|
Torsten Duwe |
2343cd |
index 23bcbb2e22e2f..711f6e3f66735 100644
|
|
Torsten Duwe |
2343cd |
--- a/drivers/crypto/qat/qat_common/adf_pf2vf_msg.c
|
|
Torsten Duwe |
2343cd |
+++ b/drivers/crypto/qat/qat_common/adf_pf2vf_msg.c
|
|
Torsten Duwe |
2343cd |
@@ -181,6 +181,42 @@ int adf_send_vf2pf_msg(struct adf_accel_dev *accel_dev, u32 msg)
|
|
Torsten Duwe |
2343cd |
return adf_iov_putmsg(accel_dev, msg, 0);
|
|
Torsten Duwe |
2343cd |
}
|
|
Torsten Duwe |
2343cd |
|
|
Torsten Duwe |
2343cd |
+/**
|
|
Torsten Duwe |
2343cd |
+ * adf_send_vf2pf_req() - send VF2PF request message
|
|
Torsten Duwe |
2343cd |
+ * @accel_dev: Pointer to acceleration device.
|
|
Torsten Duwe |
2343cd |
+ * @msg: Request message to send
|
|
Torsten Duwe |
2343cd |
+ *
|
|
Torsten Duwe |
2343cd |
+ * This function sends a message that requires a response from the VF to the PF
|
|
Torsten Duwe |
2343cd |
+ * and waits for a reply.
|
|
Torsten Duwe |
2343cd |
+ *
|
|
Torsten Duwe |
2343cd |
+ * Return: 0 on success, error code otherwise.
|
|
Torsten Duwe |
2343cd |
+ */
|
|
Torsten Duwe |
2343cd |
+static int adf_send_vf2pf_req(struct adf_accel_dev *accel_dev, u32 msg)
|
|
Torsten Duwe |
2343cd |
+{
|
|
Torsten Duwe |
2343cd |
+ unsigned long timeout = msecs_to_jiffies(ADF_PFVF_MSG_RESP_TIMEOUT);
|
|
Torsten Duwe |
2343cd |
+ int ret;
|
|
Torsten Duwe |
2343cd |
+
|
|
Torsten Duwe |
2343cd |
+ reinit_completion(&accel_dev->vf.iov_msg_completion);
|
|
Torsten Duwe |
2343cd |
+
|
|
Torsten Duwe |
2343cd |
+ /* Send request from VF to PF */
|
|
Torsten Duwe |
2343cd |
+ ret = adf_send_vf2pf_msg(accel_dev, msg);
|
|
Torsten Duwe |
2343cd |
+ if (ret) {
|
|
Torsten Duwe |
2343cd |
+ dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
2343cd |
+ "Failed to send request msg to PF\n");
|
|
Torsten Duwe |
2343cd |
+ return ret;
|
|
Torsten Duwe |
2343cd |
+ }
|
|
Torsten Duwe |
2343cd |
+
|
|
Torsten Duwe |
2343cd |
+ /* Wait for response */
|
|
Torsten Duwe |
2343cd |
+ if (!wait_for_completion_timeout(&accel_dev->vf.iov_msg_completion,
|
|
Torsten Duwe |
2343cd |
+ timeout)) {
|
|
Torsten Duwe |
2343cd |
+ dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
2343cd |
+ "PFVF request/response message timeout expired\n");
|
|
Torsten Duwe |
2343cd |
+ return -EIO;
|
|
Torsten Duwe |
2343cd |
+ }
|
|
Torsten Duwe |
2343cd |
+
|
|
Torsten Duwe |
2343cd |
+ return 0;
|
|
Torsten Duwe |
2343cd |
+}
|
|
Torsten Duwe |
2343cd |
+
|
|
Torsten Duwe |
2343cd |
void adf_vf2pf_req_hndl(struct adf_accel_vf_info *vf_info)
|
|
Torsten Duwe |
2343cd |
{
|
|
Torsten Duwe |
2343cd |
struct adf_accel_dev *accel_dev = vf_info->accel_dev;
|
|
Torsten Duwe |
2343cd |
@@ -306,7 +342,6 @@ void adf_pf2vf_notify_restarting(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
2343cd |
|
|
Torsten Duwe |
2343cd |
static int adf_vf2pf_request_version(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
2343cd |
{
|
|
Torsten Duwe |
2343cd |
- unsigned long timeout = msecs_to_jiffies(ADF_PFVF_MSG_RESP_TIMEOUT);
|
|
Torsten Duwe |
2343cd |
struct adf_hw_device_data *hw_data = accel_dev->hw_device;
|
|
Torsten Duwe |
2343cd |
u32 msg = 0;
|
|
Torsten Duwe |
2343cd |
int ret;
|
|
Torsten Duwe |
2343cd |
@@ -316,24 +351,13 @@ static int adf_vf2pf_request_version(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
2343cd |
msg |= ADF_PFVF_COMPAT_THIS_VERSION << ADF_VF2PF_COMPAT_VER_REQ_SHIFT;
|
|
Torsten Duwe |
2343cd |
BUILD_BUG_ON(ADF_PFVF_COMPAT_THIS_VERSION > 255);
|
|
Torsten Duwe |
2343cd |
|
|
Torsten Duwe |
2343cd |
- reinit_completion(&accel_dev->vf.iov_msg_completion);
|
|
Torsten Duwe |
2343cd |
-
|
|
Torsten Duwe |
2343cd |
- /* Send request from VF to PF */
|
|
Torsten Duwe |
2343cd |
- ret = adf_send_vf2pf_msg(accel_dev, msg);
|
|
Torsten Duwe |
2343cd |
+ ret = adf_send_vf2pf_req(accel_dev, msg);
|
|
Torsten Duwe |
2343cd |
if (ret) {
|
|
Torsten Duwe |
2343cd |
dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
2343cd |
"Failed to send Compatibility Version Request.\n");
|
|
Torsten Duwe |
2343cd |
return ret;
|
|
Torsten Duwe |
2343cd |
}
|
|
Torsten Duwe |
2343cd |
|
|
Torsten Duwe |
2343cd |
- /* Wait for response */
|
|
Torsten Duwe |
2343cd |
- if (!wait_for_completion_timeout(&accel_dev->vf.iov_msg_completion,
|
|
Torsten Duwe |
2343cd |
- timeout)) {
|
|
Torsten Duwe |
2343cd |
- dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
2343cd |
- "IOV request/response message timeout expired\n");
|
|
Torsten Duwe |
2343cd |
- return -EIO;
|
|
Torsten Duwe |
2343cd |
- }
|
|
Torsten Duwe |
2343cd |
-
|
|
Torsten Duwe |
2343cd |
/* Response from PF received, check compatibility */
|
|
Torsten Duwe |
2343cd |
switch (accel_dev->vf.compatible) {
|
|
Torsten Duwe |
2343cd |
case ADF_PF2VF_VF_COMPATIBLE:
|
|
Torsten Duwe |
2343cd |
--
|
|
Torsten Duwe |
2343cd |
2.35.3
|
|
Torsten Duwe |
2343cd |
|