Torsten Duwe 267544
From 956125e21f460ef94660019b6ec9de3f835f93ab Mon Sep 17 00:00:00 2001
Torsten Duwe 267544
From: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Torsten Duwe 267544
Date: Wed, 17 Nov 2021 14:30:40 +0000
Torsten Duwe 267544
Subject: [PATCH] crypto: qat - change PFVF ACK behaviour
Torsten Duwe 267544
Git-commit: 956125e21f460ef94660019b6ec9de3f835f93ab
Torsten Duwe 267544
Patch-mainline: v5.17-rc1
Torsten Duwe 267544
References: jsc#PED-1073
Torsten Duwe 267544
Torsten Duwe 267544
Change the PFVF receipt flow on the VF side to read, ack and handle the
Torsten Duwe 267544
message instead of read, handle and ack.
Torsten Duwe 267544
This is done for (1) consistency with the PF side, see the function
Torsten Duwe 267544
adf_recv_and_handle_vf2pf_msg() in adf_pf2vf_msg.c, and (2) performance
Torsten Duwe 267544
reasons, to avoid keeping the CSR busy while parsing the message.
Torsten Duwe 267544
Torsten Duwe 267544
In addition, do not ACK PFVF legacy messages, as this driver is not
Torsten Duwe 267544
capable of handling PFVF legacy messages.
Torsten Duwe 267544
If a PFVF message with MSGORIGIN not set is received, do nothing.
Torsten Duwe 267544
Torsten Duwe 267544
Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Torsten Duwe 267544
Reviewed-by: Marco Chiappero <marco.chiappero@intel.com>
Torsten Duwe 267544
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Torsten Duwe 267544
Signed-off-by: Torsten Duwe <duwe@suse.de>
Torsten Duwe 267544
Torsten Duwe 267544
---
Torsten Duwe 267544
 drivers/crypto/qat/qat_common/adf_pf2vf_msg.c | 8 ++++----
Torsten Duwe 267544
 drivers/crypto/qat/qat_common/adf_vf2pf_msg.c | 7 ++++---
Torsten Duwe 267544
 2 files changed, 8 insertions(+), 7 deletions(-)
Torsten Duwe 267544
Torsten Duwe 267544
diff --git a/drivers/crypto/qat/qat_common/adf_pf2vf_msg.c b/drivers/crypto/qat/qat_common/adf_pf2vf_msg.c
Torsten Duwe 267544
index 796301e9fe5bc..4922ee2a2a081 100644
Torsten Duwe 267544
--- a/drivers/crypto/qat/qat_common/adf_pf2vf_msg.c
Torsten Duwe 267544
+++ b/drivers/crypto/qat/qat_common/adf_pf2vf_msg.c
Torsten Duwe 267544
@@ -195,14 +195,14 @@ bool adf_recv_and_handle_vf2pf_msg(struct adf_accel_dev *accel_dev, u32 vf_nr)
Torsten Duwe 267544
 		return true;
Torsten Duwe 267544
 	}
Torsten Duwe 267544
 
Torsten Duwe 267544
-	/* To ACK, clear the VF2PFINT bit */
Torsten Duwe 267544
-	msg &= ~ADF_VF2PF_INT;
Torsten Duwe 267544
-	ADF_CSR_WR(pmisc_addr, hw_data->get_pf2vf_offset(vf_nr), msg);
Torsten Duwe 267544
-
Torsten Duwe 267544
 	if (!(msg & ADF_VF2PF_MSGORIGIN_SYSTEM))
Torsten Duwe 267544
 		/* Ignore legacy non-system (non-kernel) VF2PF messages */
Torsten Duwe 267544
 		goto err;
Torsten Duwe 267544
 
Torsten Duwe 267544
+	/* To ACK, clear the VF2PFINT bit */
Torsten Duwe 267544
+	msg &= ~ADF_VF2PF_INT;
Torsten Duwe 267544
+	ADF_CSR_WR(pmisc_addr, hw_data->get_pf2vf_offset(vf_nr), msg);
Torsten Duwe 267544
+
Torsten Duwe 267544
 	switch ((msg & ADF_VF2PF_MSGTYPE_MASK) >> ADF_VF2PF_MSGTYPE_SHIFT) {
Torsten Duwe 267544
 	case ADF_VF2PF_MSGTYPE_COMPAT_VER_REQ:
Torsten Duwe 267544
 		{
Torsten Duwe 267544
diff --git a/drivers/crypto/qat/qat_common/adf_vf2pf_msg.c b/drivers/crypto/qat/qat_common/adf_vf2pf_msg.c
Torsten Duwe 267544
index 064477fcb5fb6..a6eaf93d5462b 100644
Torsten Duwe 267544
--- a/drivers/crypto/qat/qat_common/adf_vf2pf_msg.c
Torsten Duwe 267544
+++ b/drivers/crypto/qat/qat_common/adf_vf2pf_msg.c
Torsten Duwe 267544
@@ -69,6 +69,10 @@ bool adf_recv_and_handle_pf2vf_msg(struct adf_accel_dev *accel_dev)
Torsten Duwe 267544
 		/* Ignore legacy non-system (non-kernel) PF2VF messages */
Torsten Duwe 267544
 		goto err;
Torsten Duwe 267544
 
Torsten Duwe 267544
+	/* To ack, clear the PF2VFINT bit */
Torsten Duwe 267544
+	msg &= ~ADF_PF2VF_INT;
Torsten Duwe 267544
+	ADF_CSR_WR(pmisc_bar_addr, offset, msg);
Torsten Duwe 267544
+
Torsten Duwe 267544
 	switch ((msg & ADF_PF2VF_MSGTYPE_MASK) >> ADF_PF2VF_MSGTYPE_SHIFT) {
Torsten Duwe 267544
 	case ADF_PF2VF_MSGTYPE_RESTARTING:
Torsten Duwe 267544
 		dev_dbg(&GET_DEV(accel_dev),
Torsten Duwe 267544
@@ -93,9 +97,6 @@ bool adf_recv_and_handle_pf2vf_msg(struct adf_accel_dev *accel_dev)
Torsten Duwe 267544
 		goto err;
Torsten Duwe 267544
 	}
Torsten Duwe 267544
 
Torsten Duwe 267544
-	/* To ack, clear the PF2VFINT bit */
Torsten Duwe 267544
-	msg &= ~ADF_PF2VF_INT;
Torsten Duwe 267544
-	ADF_CSR_WR(pmisc_bar_addr, offset, msg);
Torsten Duwe 267544
 	return ret;
Torsten Duwe 267544
 
Torsten Duwe 267544
 err:
Torsten Duwe 267544
-- 
Torsten Duwe 267544
2.35.3
Torsten Duwe 267544