Torsten Duwe 2ca2bc
From 6ed942ed3c47b3ebb4e8de3ff10e761cdf82ba74 Mon Sep 17 00:00:00 2001
Torsten Duwe 2ca2bc
From: Marco Chiappero <marco.chiappero@intel.com>
Torsten Duwe 2ca2bc
Date: Thu, 16 Dec 2021 09:13:17 +0000
Torsten Duwe 2ca2bc
Subject: [PATCH] crypto: qat - make PFVF message construction direction
Torsten Duwe 2ca2bc
 agnostic
Torsten Duwe 2ca2bc
Git-commit: 6ed942ed3c47b3ebb4e8de3ff10e761cdf82ba74
Torsten Duwe 2ca2bc
Patch-mainline: v5.17-rc1
Torsten Duwe 2ca2bc
References: jsc#PED-1073
Torsten Duwe 2ca2bc
Torsten Duwe 2ca2bc
Currently PFVF messages are created upfront in the CSR format, that is
Torsten Duwe 2ca2bc
PF2VF messages starting from bit 0 and VF2PF from bit 16, and passed
Torsten Duwe 2ca2bc
along unmodified to the PFVF send function.
Torsten Duwe 2ca2bc
Torsten Duwe 2ca2bc
Refactor the code to allow the VF2PF messages to be built starting from
Torsten Duwe 2ca2bc
bit 0, as for the PF2VF messages. Shift the VF to PF messages just
Torsten Duwe 2ca2bc
before sending them, and refactor the send logic to handle messages
Torsten Duwe 2ca2bc
properly depending on the direction.
Torsten Duwe 2ca2bc
Torsten Duwe 2ca2bc
As a result all the messages are composed the same way regardless of
Torsten Duwe 2ca2bc
the direction.
Torsten Duwe 2ca2bc
Torsten Duwe 2ca2bc
Signed-off-by: Marco Chiappero <marco.chiappero@intel.com>
Torsten Duwe 2ca2bc
Reviewed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Torsten Duwe 2ca2bc
Reviewed-by: Fiona Trahe <fiona.trahe@intel.com>
Torsten Duwe 2ca2bc
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Torsten Duwe 2ca2bc
Signed-off-by: Torsten Duwe <duwe@suse.de>
Torsten Duwe 2ca2bc
Torsten Duwe 2ca2bc
---
Torsten Duwe 2ca2bc
 drivers/crypto/qat/qat_common/adf_gen2_pfvf.c | 129 +++++++++++++-----
Torsten Duwe 2ca2bc
 drivers/crypto/qat/qat_common/adf_pfvf_msg.h  |  26 ++--
Torsten Duwe 2ca2bc
 .../crypto/qat/qat_common/adf_pfvf_pf_msg.c   |   4 +-
Torsten Duwe 2ca2bc
 .../crypto/qat/qat_common/adf_pfvf_pf_proto.c |  10 +-
Torsten Duwe 2ca2bc
 .../crypto/qat/qat_common/adf_pfvf_vf_msg.c   |  20 +--
Torsten Duwe 2ca2bc
 .../crypto/qat/qat_common/adf_pfvf_vf_proto.c |   2 +-
Torsten Duwe 2ca2bc
 6 files changed, 120 insertions(+), 71 deletions(-)
Torsten Duwe 2ca2bc
Torsten Duwe 2ca2bc
diff --git a/drivers/crypto/qat/qat_common/adf_gen2_pfvf.c b/drivers/crypto/qat/qat_common/adf_gen2_pfvf.c
Torsten Duwe 2ca2bc
index 5ac69ece34a85..2e0b9ac273931 100644
Torsten Duwe 2ca2bc
--- a/drivers/crypto/qat/qat_common/adf_gen2_pfvf.c
Torsten Duwe 2ca2bc
+++ b/drivers/crypto/qat/qat_common/adf_gen2_pfvf.c
Torsten Duwe 2ca2bc
@@ -17,6 +17,14 @@
Torsten Duwe 2ca2bc
 #define ADF_GEN2_PF_PF2VF_OFFSET(i)	(0x3A000 + 0x280 + ((i) * 0x04))
Torsten Duwe 2ca2bc
 #define ADF_GEN2_VF_PF2VF_OFFSET	0x200
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
+#define ADF_GEN2_CSR_IN_USE		0x6AC2
Torsten Duwe 2ca2bc
+#define ADF_GEN2_CSR_IN_USE_MASK	0xFFFE
Torsten Duwe 2ca2bc
+
Torsten Duwe 2ca2bc
+enum gen2_csr_pos {
Torsten Duwe 2ca2bc
+	ADF_GEN2_CSR_PF2VF_OFFSET	=  0,
Torsten Duwe 2ca2bc
+	ADF_GEN2_CSR_VF2PF_OFFSET	= 16,
Torsten Duwe 2ca2bc
+};
Torsten Duwe 2ca2bc
+
Torsten Duwe 2ca2bc
 #define ADF_PFVF_MSG_ACK_DELAY		2
Torsten Duwe 2ca2bc
 #define ADF_PFVF_MSG_ACK_MAX_RETRY	100
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
@@ -72,38 +80,81 @@ static void adf_gen2_disable_vf2pf_interrupts(void __iomem *pmisc_addr,
Torsten Duwe 2ca2bc
 	}
Torsten Duwe 2ca2bc
 }
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
+static u32 gen2_csr_get_int_bit(enum gen2_csr_pos offset)
Torsten Duwe 2ca2bc
+{
Torsten Duwe 2ca2bc
+	return ADF_PFVF_INT << offset;
Torsten Duwe 2ca2bc
+}
Torsten Duwe 2ca2bc
+
Torsten Duwe 2ca2bc
+static u32 gen2_csr_msg_to_position(u32 csr_msg, enum gen2_csr_pos offset)
Torsten Duwe 2ca2bc
+{
Torsten Duwe 2ca2bc
+	return (csr_msg & 0xFFFF) << offset;
Torsten Duwe 2ca2bc
+}
Torsten Duwe 2ca2bc
+
Torsten Duwe 2ca2bc
+static u32 gen2_csr_msg_from_position(u32 csr_val, enum gen2_csr_pos offset)
Torsten Duwe 2ca2bc
+{
Torsten Duwe 2ca2bc
+	return (csr_val >> offset) & 0xFFFF;
Torsten Duwe 2ca2bc
+}
Torsten Duwe 2ca2bc
+
Torsten Duwe 2ca2bc
+static bool gen2_csr_is_in_use(u32 msg, enum gen2_csr_pos offset)
Torsten Duwe 2ca2bc
+{
Torsten Duwe 2ca2bc
+	return ((msg >> offset) & ADF_GEN2_CSR_IN_USE_MASK) == ADF_GEN2_CSR_IN_USE;
Torsten Duwe 2ca2bc
+}
Torsten Duwe 2ca2bc
+
Torsten Duwe 2ca2bc
+static void gen2_csr_clear_in_use(u32 *msg, enum gen2_csr_pos offset)
Torsten Duwe 2ca2bc
+{
Torsten Duwe 2ca2bc
+	*msg &= ~(ADF_GEN2_CSR_IN_USE_MASK << offset);
Torsten Duwe 2ca2bc
+}
Torsten Duwe 2ca2bc
+
Torsten Duwe 2ca2bc
+static void gen2_csr_set_in_use(u32 *msg, enum gen2_csr_pos offset)
Torsten Duwe 2ca2bc
+{
Torsten Duwe 2ca2bc
+	*msg |= (ADF_GEN2_CSR_IN_USE << offset);
Torsten Duwe 2ca2bc
+}
Torsten Duwe 2ca2bc
+
Torsten Duwe 2ca2bc
+static bool is_legacy_user_pfvf_message(u32 msg)
Torsten Duwe 2ca2bc
+{
Torsten Duwe 2ca2bc
+	return !(msg & ADF_PFVF_MSGORIGIN_SYSTEM);
Torsten Duwe 2ca2bc
+}
Torsten Duwe 2ca2bc
+
Torsten Duwe 2ca2bc
 static int adf_gen2_pfvf_send(struct adf_accel_dev *accel_dev, u32 msg,
Torsten Duwe 2ca2bc
 			      u8 vf_nr)
Torsten Duwe 2ca2bc
 {
Torsten Duwe 2ca2bc
 	void __iomem *pmisc_addr = adf_get_pmisc_base(accel_dev);
Torsten Duwe 2ca2bc
 	unsigned int retries = ADF_PFVF_MSG_MAX_RETRIES;
Torsten Duwe 2ca2bc
-	u32 remote_in_use_mask, remote_in_use_pattern;
Torsten Duwe 2ca2bc
-	u32 local_in_use_mask, local_in_use_pattern;
Torsten Duwe 2ca2bc
-	u32 val, pfvf_offset, count = 0;
Torsten Duwe 2ca2bc
+	enum gen2_csr_pos remote_offset;
Torsten Duwe 2ca2bc
+	enum gen2_csr_pos local_offset;
Torsten Duwe 2ca2bc
 	struct mutex *lock;	/* lock preventing concurrent acces of CSR */
Torsten Duwe 2ca2bc
+	u32 pfvf_offset;
Torsten Duwe 2ca2bc
+	u32 count = 0;
Torsten Duwe 2ca2bc
 	u32 int_bit;
Torsten Duwe 2ca2bc
+	u32 csr_val;
Torsten Duwe 2ca2bc
 	int ret;
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
+	/* Gen2 messages, both PF->VF and VF->PF, are all 16 bits long. This
Torsten Duwe 2ca2bc
+	 * allows us to build and read messages as if they where all 0 based.
Torsten Duwe 2ca2bc
+	 * However, send and receive are in a single shared 32 bits register,
Torsten Duwe 2ca2bc
+	 * so we need to shift and/or mask the message half before decoding
Torsten Duwe 2ca2bc
+	 * it and after encoding it. Which one to shift depends on the
Torsten Duwe 2ca2bc
+	 * direction.
Torsten Duwe 2ca2bc
+	 */
Torsten Duwe 2ca2bc
 	if (accel_dev->is_vf) {
Torsten Duwe 2ca2bc
 		pfvf_offset = GET_PFVF_OPS(accel_dev)->get_vf2pf_offset(0);
Torsten Duwe 2ca2bc
 		lock = &accel_dev->vf.vf2pf_lock;
Torsten Duwe 2ca2bc
-		local_in_use_mask = ADF_VF2PF_IN_USE_BY_VF_MASK;
Torsten Duwe 2ca2bc
-		local_in_use_pattern = ADF_VF2PF_IN_USE_BY_VF;
Torsten Duwe 2ca2bc
-		remote_in_use_mask = ADF_PF2VF_IN_USE_BY_PF_MASK;
Torsten Duwe 2ca2bc
-		remote_in_use_pattern = ADF_PF2VF_IN_USE_BY_PF;
Torsten Duwe 2ca2bc
-		int_bit = ADF_VF2PF_INT;
Torsten Duwe 2ca2bc
+		local_offset = ADF_GEN2_CSR_VF2PF_OFFSET;
Torsten Duwe 2ca2bc
+		remote_offset = ADF_GEN2_CSR_PF2VF_OFFSET;
Torsten Duwe 2ca2bc
 	} else {
Torsten Duwe 2ca2bc
 		pfvf_offset = GET_PFVF_OPS(accel_dev)->get_pf2vf_offset(vf_nr);
Torsten Duwe 2ca2bc
 		lock = &accel_dev->pf.vf_info[vf_nr].pf2vf_lock;
Torsten Duwe 2ca2bc
-		local_in_use_mask = ADF_PF2VF_IN_USE_BY_PF_MASK;
Torsten Duwe 2ca2bc
-		local_in_use_pattern = ADF_PF2VF_IN_USE_BY_PF;
Torsten Duwe 2ca2bc
-		remote_in_use_mask = ADF_VF2PF_IN_USE_BY_VF_MASK;
Torsten Duwe 2ca2bc
-		remote_in_use_pattern = ADF_VF2PF_IN_USE_BY_VF;
Torsten Duwe 2ca2bc
-		int_bit = ADF_PF2VF_INT;
Torsten Duwe 2ca2bc
+		local_offset = ADF_GEN2_CSR_PF2VF_OFFSET;
Torsten Duwe 2ca2bc
+		remote_offset = ADF_GEN2_CSR_VF2PF_OFFSET;
Torsten Duwe 2ca2bc
 	}
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
-	msg &= ~local_in_use_mask;
Torsten Duwe 2ca2bc
-	msg |= local_in_use_pattern;
Torsten Duwe 2ca2bc
+	int_bit = gen2_csr_get_int_bit(local_offset);
Torsten Duwe 2ca2bc
+
Torsten Duwe 2ca2bc
+	/* Pre-calculate message, shifting it in place and setting
Torsten Duwe 2ca2bc
+	 * the in use pattern
Torsten Duwe 2ca2bc
+	 */
Torsten Duwe 2ca2bc
+	msg = gen2_csr_msg_to_position(msg, local_offset);
Torsten Duwe 2ca2bc
+	gen2_csr_set_in_use(&msg, remote_offset);
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
 	mutex_lock(lock);
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
@@ -111,8 +162,8 @@ start:
Torsten Duwe 2ca2bc
 	ret = 0;
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
 	/* Check if the PFVF CSR is in use by remote function */
Torsten Duwe 2ca2bc
-	val = ADF_CSR_RD(pmisc_addr, pfvf_offset);
Torsten Duwe 2ca2bc
-	if ((val & remote_in_use_mask) == remote_in_use_pattern) {
Torsten Duwe 2ca2bc
+	csr_val = ADF_CSR_RD(pmisc_addr, pfvf_offset);
Torsten Duwe 2ca2bc
+	if (gen2_csr_is_in_use(csr_val, local_offset)) {
Torsten Duwe 2ca2bc
 		dev_dbg(&GET_DEV(accel_dev),
Torsten Duwe 2ca2bc
 			"PFVF CSR in use by remote function\n");
Torsten Duwe 2ca2bc
 		goto retry;
Torsten Duwe 2ca2bc
@@ -124,23 +175,25 @@ start:
Torsten Duwe 2ca2bc
 	/* Wait for confirmation from remote func it received the message */
Torsten Duwe 2ca2bc
 	do {
Torsten Duwe 2ca2bc
 		msleep(ADF_PFVF_MSG_ACK_DELAY);
Torsten Duwe 2ca2bc
-		val = ADF_CSR_RD(pmisc_addr, pfvf_offset);
Torsten Duwe 2ca2bc
-	} while ((val & int_bit) && (count++ < ADF_PFVF_MSG_ACK_MAX_RETRY));
Torsten Duwe 2ca2bc
+		csr_val = ADF_CSR_RD(pmisc_addr, pfvf_offset);
Torsten Duwe 2ca2bc
+	} while ((csr_val & int_bit) && (count++ < ADF_PFVF_MSG_ACK_MAX_RETRY));
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
-	if (val & int_bit) {
Torsten Duwe 2ca2bc
+	if (csr_val & int_bit) {
Torsten Duwe 2ca2bc
 		dev_dbg(&GET_DEV(accel_dev), "ACK not received from remote\n");
Torsten Duwe 2ca2bc
-		val &= ~int_bit;
Torsten Duwe 2ca2bc
+		csr_val &= ~int_bit;
Torsten Duwe 2ca2bc
 		ret = -EIO;
Torsten Duwe 2ca2bc
 	}
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
-	if (val != msg) {
Torsten Duwe 2ca2bc
+	if (csr_val != msg) {
Torsten Duwe 2ca2bc
 		dev_dbg(&GET_DEV(accel_dev),
Torsten Duwe 2ca2bc
 			"Collision - PFVF CSR overwritten by remote function\n");
Torsten Duwe 2ca2bc
 		goto retry;
Torsten Duwe 2ca2bc
 	}
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
 	/* Finished with the PFVF CSR; relinquish it and leave msg in CSR */
Torsten Duwe 2ca2bc
-	ADF_CSR_WR(pmisc_addr, pfvf_offset, val & ~local_in_use_mask);
Torsten Duwe 2ca2bc
+	gen2_csr_clear_in_use(&csr_val, remote_offset);
Torsten Duwe 2ca2bc
+	ADF_CSR_WR(pmisc_addr, pfvf_offset, csr_val);
Torsten Duwe 2ca2bc
+
Torsten Duwe 2ca2bc
 out:
Torsten Duwe 2ca2bc
 	mutex_unlock(lock);
Torsten Duwe 2ca2bc
 	return ret;
Torsten Duwe 2ca2bc
@@ -158,39 +211,43 @@ retry:
Torsten Duwe 2ca2bc
 static u32 adf_gen2_pfvf_recv(struct adf_accel_dev *accel_dev, u8 vf_nr)
Torsten Duwe 2ca2bc
 {
Torsten Duwe 2ca2bc
 	void __iomem *pmisc_addr = adf_get_pmisc_base(accel_dev);
Torsten Duwe 2ca2bc
+	enum gen2_csr_pos local_offset;
Torsten Duwe 2ca2bc
 	u32 pfvf_offset;
Torsten Duwe 2ca2bc
-	u32 msg_origin;
Torsten Duwe 2ca2bc
 	u32 int_bit;
Torsten Duwe 2ca2bc
+	u32 csr_val;
Torsten Duwe 2ca2bc
 	u32 msg;
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
 	if (accel_dev->is_vf) {
Torsten Duwe 2ca2bc
 		pfvf_offset = GET_PFVF_OPS(accel_dev)->get_pf2vf_offset(0);
Torsten Duwe 2ca2bc
-		int_bit = ADF_PF2VF_INT;
Torsten Duwe 2ca2bc
-		msg_origin = ADF_PF2VF_MSGORIGIN_SYSTEM;
Torsten Duwe 2ca2bc
+		local_offset = ADF_GEN2_CSR_PF2VF_OFFSET;
Torsten Duwe 2ca2bc
 	} else {
Torsten Duwe 2ca2bc
 		pfvf_offset = GET_PFVF_OPS(accel_dev)->get_vf2pf_offset(vf_nr);
Torsten Duwe 2ca2bc
-		int_bit = ADF_VF2PF_INT;
Torsten Duwe 2ca2bc
-		msg_origin = ADF_VF2PF_MSGORIGIN_SYSTEM;
Torsten Duwe 2ca2bc
+		local_offset = ADF_GEN2_CSR_VF2PF_OFFSET;
Torsten Duwe 2ca2bc
 	}
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
+	int_bit = gen2_csr_get_int_bit(local_offset);
Torsten Duwe 2ca2bc
+
Torsten Duwe 2ca2bc
 	/* Read message */
Torsten Duwe 2ca2bc
-	msg = ADF_CSR_RD(pmisc_addr, pfvf_offset);
Torsten Duwe 2ca2bc
-	if (!(msg & int_bit)) {
Torsten Duwe 2ca2bc
+	csr_val = ADF_CSR_RD(pmisc_addr, pfvf_offset);
Torsten Duwe 2ca2bc
+	if (!(csr_val & int_bit)) {
Torsten Duwe 2ca2bc
 		dev_info(&GET_DEV(accel_dev),
Torsten Duwe 2ca2bc
-			 "Spurious PFVF interrupt, msg 0x%.8x. Ignored\n", msg);
Torsten Duwe 2ca2bc
+			 "Spurious PFVF interrupt, msg 0x%.8x. Ignored\n", csr_val);
Torsten Duwe 2ca2bc
 		return 0;
Torsten Duwe 2ca2bc
 	}
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
-	/* Ignore legacy non-system (non-kernel) VF2PF messages */
Torsten Duwe 2ca2bc
-	if (!(msg & msg_origin)) {
Torsten Duwe 2ca2bc
+	/* Extract the message from the CSR */
Torsten Duwe 2ca2bc
+	msg = gen2_csr_msg_from_position(csr_val, local_offset);
Torsten Duwe 2ca2bc
+
Torsten Duwe 2ca2bc
+	/* Ignore legacy non-system (non-kernel) messages */
Torsten Duwe 2ca2bc
+	if (unlikely(is_legacy_user_pfvf_message(msg))) {
Torsten Duwe 2ca2bc
 		dev_dbg(&GET_DEV(accel_dev),
Torsten Duwe 2ca2bc
-			"Ignored non-system message (0x%.8x);\n", msg);
Torsten Duwe 2ca2bc
+			"Ignored non-system message (0x%.8x);\n", csr_val);
Torsten Duwe 2ca2bc
 		return 0;
Torsten Duwe 2ca2bc
 	}
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
 	/* To ACK, clear the INT bit */
Torsten Duwe 2ca2bc
-	msg &= ~int_bit;
Torsten Duwe 2ca2bc
-	ADF_CSR_WR(pmisc_addr, pfvf_offset, msg);
Torsten Duwe 2ca2bc
+	csr_val &= ~int_bit;
Torsten Duwe 2ca2bc
+	ADF_CSR_WR(pmisc_addr, pfvf_offset, csr_val);
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
 	return msg;
Torsten Duwe 2ca2bc
 }
Torsten Duwe 2ca2bc
diff --git a/drivers/crypto/qat/qat_common/adf_pfvf_msg.h b/drivers/crypto/qat/qat_common/adf_pfvf_msg.h
Torsten Duwe 2ca2bc
index 8b476072df285..3ba88bcd07269 100644
Torsten Duwe 2ca2bc
--- a/drivers/crypto/qat/qat_common/adf_pfvf_msg.h
Torsten Duwe 2ca2bc
+++ b/drivers/crypto/qat/qat_common/adf_pfvf_msg.h
Torsten Duwe 2ca2bc
@@ -53,27 +53,19 @@
Torsten Duwe 2ca2bc
  * adf_gen2_pfvf_send() in adf_pf2vf_msg.c).
Torsten Duwe 2ca2bc
  */
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
-/* PF->VF messages */
Torsten Duwe 2ca2bc
-#define ADF_PF2VF_INT				BIT(0)
Torsten Duwe 2ca2bc
-#define ADF_PF2VF_MSGORIGIN_SYSTEM		BIT(1)
Torsten Duwe 2ca2bc
-#define ADF_PF2VF_IN_USE_BY_PF			0x6AC20000
Torsten Duwe 2ca2bc
-#define ADF_PF2VF_IN_USE_BY_PF_MASK		0xFFFE0000
Torsten Duwe 2ca2bc
-#define ADF_PF2VF_MSGTYPE_MASK			0x0000003C
Torsten Duwe 2ca2bc
-#define ADF_PF2VF_MSGTYPE_SHIFT			2
Torsten Duwe 2ca2bc
+/* PFVF message common bits */
Torsten Duwe 2ca2bc
+#define ADF_PFVF_INT				BIT(0)
Torsten Duwe 2ca2bc
+#define ADF_PFVF_MSGORIGIN_SYSTEM		BIT(1)
Torsten Duwe 2ca2bc
+#define ADF_PFVF_MSGTYPE_SHIFT			2
Torsten Duwe 2ca2bc
+#define ADF_PFVF_MSGTYPE_MASK			0x0F
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
+/* PF->VF messages */
Torsten Duwe 2ca2bc
 enum pf2vf_msgtype {
Torsten Duwe 2ca2bc
 	ADF_PF2VF_MSGTYPE_RESTARTING		= 0x01,
Torsten Duwe 2ca2bc
 	ADF_PF2VF_MSGTYPE_VERSION_RESP		= 0x02,
Torsten Duwe 2ca2bc
 };
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
 /* VF->PF messages */
Torsten Duwe 2ca2bc
-#define ADF_VF2PF_INT				BIT(16)
Torsten Duwe 2ca2bc
-#define ADF_VF2PF_MSGORIGIN_SYSTEM		BIT(17)
Torsten Duwe 2ca2bc
-#define ADF_VF2PF_IN_USE_BY_VF			0x00006AC2
Torsten Duwe 2ca2bc
-#define ADF_VF2PF_IN_USE_BY_VF_MASK		0x0000FFFE
Torsten Duwe 2ca2bc
-#define ADF_VF2PF_MSGTYPE_MASK			0x003C0000
Torsten Duwe 2ca2bc
-#define ADF_VF2PF_MSGTYPE_SHIFT			18
Torsten Duwe 2ca2bc
-
Torsten Duwe 2ca2bc
 enum vf2pf_msgtype {
Torsten Duwe 2ca2bc
 	ADF_VF2PF_MSGTYPE_INIT			= 0x03,
Torsten Duwe 2ca2bc
 	ADF_VF2PF_MSGTYPE_SHUTDOWN		= 0x04,
Torsten Duwe 2ca2bc
@@ -90,10 +82,10 @@ enum pfvf_compatibility_version {
Torsten Duwe 2ca2bc
 /* PF->VF Version Response */
Torsten Duwe 2ca2bc
 #define ADF_PF2VF_MINORVERSION_SHIFT		6
Torsten Duwe 2ca2bc
 #define ADF_PF2VF_MAJORVERSION_SHIFT		10
Torsten Duwe 2ca2bc
-#define ADF_PF2VF_VERSION_RESP_VERS_MASK	0x00003FC0
Torsten Duwe 2ca2bc
 #define ADF_PF2VF_VERSION_RESP_VERS_SHIFT	6
Torsten Duwe 2ca2bc
-#define ADF_PF2VF_VERSION_RESP_RESULT_MASK	0x0000C000
Torsten Duwe 2ca2bc
+#define ADF_PF2VF_VERSION_RESP_VERS_MASK	0xFF
Torsten Duwe 2ca2bc
 #define ADF_PF2VF_VERSION_RESP_RESULT_SHIFT	14
Torsten Duwe 2ca2bc
+#define ADF_PF2VF_VERSION_RESP_RESULT_MASK	0x03
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
 enum pf2vf_compat_response {
Torsten Duwe 2ca2bc
 	ADF_PF2VF_VF_COMPATIBLE			= 0x01,
Torsten Duwe 2ca2bc
@@ -102,6 +94,6 @@ enum pf2vf_compat_response {
Torsten Duwe 2ca2bc
 };
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
 /* VF->PF Compatible Version Request */
Torsten Duwe 2ca2bc
-#define ADF_VF2PF_COMPAT_VER_REQ_SHIFT		22
Torsten Duwe 2ca2bc
+#define ADF_VF2PF_COMPAT_VER_REQ_SHIFT		6
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
 #endif /* ADF_PFVF_MSG_H */
Torsten Duwe 2ca2bc
diff --git a/drivers/crypto/qat/qat_common/adf_pfvf_pf_msg.c b/drivers/crypto/qat/qat_common/adf_pfvf_pf_msg.c
Torsten Duwe 2ca2bc
index 647b82e6c4baf..4057d7d74d620 100644
Torsten Duwe 2ca2bc
--- a/drivers/crypto/qat/qat_common/adf_pfvf_pf_msg.c
Torsten Duwe 2ca2bc
+++ b/drivers/crypto/qat/qat_common/adf_pfvf_pf_msg.c
Torsten Duwe 2ca2bc
@@ -9,8 +9,8 @@
Torsten Duwe 2ca2bc
 void adf_pf2vf_notify_restarting(struct adf_accel_dev *accel_dev)
Torsten Duwe 2ca2bc
 {
Torsten Duwe 2ca2bc
 	struct adf_accel_vf_info *vf;
Torsten Duwe 2ca2bc
-	u32 msg = (ADF_PF2VF_MSGORIGIN_SYSTEM |
Torsten Duwe 2ca2bc
-		(ADF_PF2VF_MSGTYPE_RESTARTING << ADF_PF2VF_MSGTYPE_SHIFT));
Torsten Duwe 2ca2bc
+	u32 msg = (ADF_PFVF_MSGORIGIN_SYSTEM |
Torsten Duwe 2ca2bc
+		(ADF_PF2VF_MSGTYPE_RESTARTING << ADF_PFVF_MSGTYPE_SHIFT));
Torsten Duwe 2ca2bc
 	int i, num_vfs = pci_num_vf(accel_to_pci_dev(accel_dev));
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
 	for (i = 0, vf = accel_dev->pf.vf_info; i < num_vfs; i++, vf++) {
Torsten Duwe 2ca2bc
diff --git a/drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.c b/drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.c
Torsten Duwe 2ca2bc
index 4f20dd35fcd45..fb477eb89fef7 100644
Torsten Duwe 2ca2bc
--- a/drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.c
Torsten Duwe 2ca2bc
+++ b/drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.c
Torsten Duwe 2ca2bc
@@ -42,7 +42,7 @@ static int adf_handle_vf2pf_msg(struct adf_accel_dev *accel_dev, u32 vf_nr,
Torsten Duwe 2ca2bc
 	struct adf_accel_vf_info *vf_info = &accel_dev->pf.vf_info[vf_nr];
Torsten Duwe 2ca2bc
 	u32 resp = 0;
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
-	switch ((msg & ADF_VF2PF_MSGTYPE_MASK) >> ADF_VF2PF_MSGTYPE_SHIFT) {
Torsten Duwe 2ca2bc
+	switch ((msg >> ADF_PFVF_MSGTYPE_SHIFT) & ADF_PFVF_MSGTYPE_MASK) {
Torsten Duwe 2ca2bc
 	case ADF_VF2PF_MSGTYPE_COMPAT_VER_REQ:
Torsten Duwe 2ca2bc
 		{
Torsten Duwe 2ca2bc
 		u8 vf_compat_ver = msg >> ADF_VF2PF_COMPAT_VER_REQ_SHIFT;
Torsten Duwe 2ca2bc
@@ -57,9 +57,9 @@ static int adf_handle_vf2pf_msg(struct adf_accel_dev *accel_dev, u32 vf_nr,
Torsten Duwe 2ca2bc
 		else
Torsten Duwe 2ca2bc
 			compat = ADF_PF2VF_VF_COMPAT_UNKNOWN;
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
-		resp =  ADF_PF2VF_MSGORIGIN_SYSTEM;
Torsten Duwe 2ca2bc
+		resp =  ADF_PFVF_MSGORIGIN_SYSTEM;
Torsten Duwe 2ca2bc
 		resp |= ADF_PF2VF_MSGTYPE_VERSION_RESP <<
Torsten Duwe 2ca2bc
-			ADF_PF2VF_MSGTYPE_SHIFT;
Torsten Duwe 2ca2bc
+			ADF_PFVF_MSGTYPE_SHIFT;
Torsten Duwe 2ca2bc
 		resp |= ADF_PFVF_COMPAT_THIS_VERSION <<
Torsten Duwe 2ca2bc
 			ADF_PF2VF_VERSION_RESP_VERS_SHIFT;
Torsten Duwe 2ca2bc
 		resp |= compat << ADF_PF2VF_VERSION_RESP_RESULT_SHIFT;
Torsten Duwe 2ca2bc
@@ -76,9 +76,9 @@ static int adf_handle_vf2pf_msg(struct adf_accel_dev *accel_dev, u32 vf_nr,
Torsten Duwe 2ca2bc
 		/* PF always newer than legacy VF */
Torsten Duwe 2ca2bc
 		compat = ADF_PF2VF_VF_COMPATIBLE;
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
-		resp = ADF_PF2VF_MSGORIGIN_SYSTEM;
Torsten Duwe 2ca2bc
+		resp = ADF_PFVF_MSGORIGIN_SYSTEM;
Torsten Duwe 2ca2bc
 		resp |= ADF_PF2VF_MSGTYPE_VERSION_RESP <<
Torsten Duwe 2ca2bc
-			ADF_PF2VF_MSGTYPE_SHIFT;
Torsten Duwe 2ca2bc
+			ADF_PFVF_MSGTYPE_SHIFT;
Torsten Duwe 2ca2bc
 		/* Set legacy major and minor version num */
Torsten Duwe 2ca2bc
 		resp |= 1 << ADF_PF2VF_MAJORVERSION_SHIFT |
Torsten Duwe 2ca2bc
 			1 << ADF_PF2VF_MINORVERSION_SHIFT;
Torsten Duwe 2ca2bc
diff --git a/drivers/crypto/qat/qat_common/adf_pfvf_vf_msg.c b/drivers/crypto/qat/qat_common/adf_pfvf_vf_msg.c
Torsten Duwe 2ca2bc
index 7635818399024..c9e929651a7d8 100644
Torsten Duwe 2ca2bc
--- a/drivers/crypto/qat/qat_common/adf_pfvf_vf_msg.c
Torsten Duwe 2ca2bc
+++ b/drivers/crypto/qat/qat_common/adf_pfvf_vf_msg.c
Torsten Duwe 2ca2bc
@@ -16,8 +16,8 @@
Torsten Duwe 2ca2bc
  */
Torsten Duwe 2ca2bc
 int adf_vf2pf_notify_init(struct adf_accel_dev *accel_dev)
Torsten Duwe 2ca2bc
 {
Torsten Duwe 2ca2bc
-	u32 msg = (ADF_VF2PF_MSGORIGIN_SYSTEM |
Torsten Duwe 2ca2bc
-		(ADF_VF2PF_MSGTYPE_INIT << ADF_VF2PF_MSGTYPE_SHIFT));
Torsten Duwe 2ca2bc
+	u32 msg = (ADF_PFVF_MSGORIGIN_SYSTEM |
Torsten Duwe 2ca2bc
+		(ADF_VF2PF_MSGTYPE_INIT << ADF_PFVF_MSGTYPE_SHIFT));
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
 	if (adf_send_vf2pf_msg(accel_dev, msg)) {
Torsten Duwe 2ca2bc
 		dev_err(&GET_DEV(accel_dev),
Torsten Duwe 2ca2bc
@@ -39,8 +39,8 @@ EXPORT_SYMBOL_GPL(adf_vf2pf_notify_init);
Torsten Duwe 2ca2bc
  */
Torsten Duwe 2ca2bc
 void adf_vf2pf_notify_shutdown(struct adf_accel_dev *accel_dev)
Torsten Duwe 2ca2bc
 {
Torsten Duwe 2ca2bc
-	u32 msg = (ADF_VF2PF_MSGORIGIN_SYSTEM |
Torsten Duwe 2ca2bc
-	    (ADF_VF2PF_MSGTYPE_SHUTDOWN << ADF_VF2PF_MSGTYPE_SHIFT));
Torsten Duwe 2ca2bc
+	u32 msg = (ADF_PFVF_MSGORIGIN_SYSTEM |
Torsten Duwe 2ca2bc
+	    (ADF_VF2PF_MSGTYPE_SHUTDOWN << ADF_PFVF_MSGTYPE_SHIFT));
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
 	if (test_bit(ADF_STATUS_PF_RUNNING, &accel_dev->status))
Torsten Duwe 2ca2bc
 		if (adf_send_vf2pf_msg(accel_dev, msg))
Torsten Duwe 2ca2bc
@@ -57,8 +57,8 @@ int adf_vf2pf_request_version(struct adf_accel_dev *accel_dev)
Torsten Duwe 2ca2bc
 	u32 resp;
Torsten Duwe 2ca2bc
 	int ret;
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
-	msg = ADF_VF2PF_MSGORIGIN_SYSTEM;
Torsten Duwe 2ca2bc
-	msg |= ADF_VF2PF_MSGTYPE_COMPAT_VER_REQ << ADF_VF2PF_MSGTYPE_SHIFT;
Torsten Duwe 2ca2bc
+	msg = ADF_PFVF_MSGORIGIN_SYSTEM;
Torsten Duwe 2ca2bc
+	msg |= ADF_VF2PF_MSGTYPE_COMPAT_VER_REQ << ADF_PFVF_MSGTYPE_SHIFT;
Torsten Duwe 2ca2bc
 	msg |= ADF_PFVF_COMPAT_THIS_VERSION << ADF_VF2PF_COMPAT_VER_REQ_SHIFT;
Torsten Duwe 2ca2bc
 	BUILD_BUG_ON(ADF_PFVF_COMPAT_THIS_VERSION > 255);
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
@@ -69,10 +69,10 @@ int adf_vf2pf_request_version(struct adf_accel_dev *accel_dev)
Torsten Duwe 2ca2bc
 		return ret;
Torsten Duwe 2ca2bc
 	}
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
-	pf_version = (resp & ADF_PF2VF_VERSION_RESP_VERS_MASK)
Torsten Duwe 2ca2bc
-		     >> ADF_PF2VF_VERSION_RESP_VERS_SHIFT;
Torsten Duwe 2ca2bc
-	compat = (resp & ADF_PF2VF_VERSION_RESP_RESULT_MASK)
Torsten Duwe 2ca2bc
-		 >> ADF_PF2VF_VERSION_RESP_RESULT_SHIFT;
Torsten Duwe 2ca2bc
+	pf_version = (resp >> ADF_PF2VF_VERSION_RESP_VERS_SHIFT)
Torsten Duwe 2ca2bc
+		     & ADF_PF2VF_VERSION_RESP_VERS_MASK;
Torsten Duwe 2ca2bc
+	compat = (resp >> ADF_PF2VF_VERSION_RESP_RESULT_SHIFT)
Torsten Duwe 2ca2bc
+		 & ADF_PF2VF_VERSION_RESP_RESULT_MASK;
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
 	/* Response from PF received, check compatibility */
Torsten Duwe 2ca2bc
 	switch (compat) {
Torsten Duwe 2ca2bc
diff --git a/drivers/crypto/qat/qat_common/adf_pfvf_vf_proto.c b/drivers/crypto/qat/qat_common/adf_pfvf_vf_proto.c
Torsten Duwe 2ca2bc
index 9c7489ed122ca..f8d1c7d0ec4e6 100644
Torsten Duwe 2ca2bc
--- a/drivers/crypto/qat/qat_common/adf_pfvf_vf_proto.c
Torsten Duwe 2ca2bc
+++ b/drivers/crypto/qat/qat_common/adf_pfvf_vf_proto.c
Torsten Duwe 2ca2bc
@@ -88,7 +88,7 @@ int adf_send_vf2pf_req(struct adf_accel_dev *accel_dev, u32 msg, u32 *resp)
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
 static bool adf_handle_pf2vf_msg(struct adf_accel_dev *accel_dev, u32 msg)
Torsten Duwe 2ca2bc
 {
Torsten Duwe 2ca2bc
-	switch ((msg & ADF_PF2VF_MSGTYPE_MASK) >> ADF_PF2VF_MSGTYPE_SHIFT) {
Torsten Duwe 2ca2bc
+	switch ((msg >> ADF_PFVF_MSGTYPE_SHIFT) & ADF_PFVF_MSGTYPE_MASK) {
Torsten Duwe 2ca2bc
 	case ADF_PF2VF_MSGTYPE_RESTARTING:
Torsten Duwe 2ca2bc
 		dev_dbg(&GET_DEV(accel_dev), "Restarting message received from PF\n");
Torsten Duwe 2ca2bc
 
Torsten Duwe 2ca2bc
-- 
Torsten Duwe 2ca2bc
2.35.3
Torsten Duwe 2ca2bc