Torsten Duwe e148df
From 9baf2de7ee4eeaca5cf95d1a399182ab83aa42b8 Mon Sep 17 00:00:00 2001
Torsten Duwe e148df
From: Marco Chiappero <marco.chiappero@intel.com>
Torsten Duwe e148df
Date: Wed, 17 Nov 2021 14:30:48 +0000
Torsten Duwe e148df
Subject: [PATCH] crypto: qat - differentiate between pf2vf and vf2pf offset
Torsten Duwe e148df
Git-commit: 9baf2de7ee4eeaca5cf95d1a399182ab83aa42b8
Torsten Duwe e148df
Patch-mainline: v5.17-rc1
Torsten Duwe e148df
References: jsc#PED-1073
Torsten Duwe e148df
Torsten Duwe e148df
Add the function get_vf2pf_offset() to adf_pfvf_ops to differentiate the
Torsten Duwe e148df
CSRs used for pf2vf and vf2pf.
Torsten Duwe e148df
Torsten Duwe e148df
Offsets may or may not be direction specific depending on QAT
Torsten Duwe e148df
generation. Since in QAT GEN2 the CSR is not direction specific, i.e.
Torsten Duwe e148df
there is a single mailbox register shared for pf2vf and vf2pf, both
Torsten Duwe e148df
get_vf2pf_offset() and get_vf2pf_offset() will return the same offset.
Torsten Duwe e148df
Torsten Duwe e148df
This change is to make the direction explicit, so it is easier to
Torsten Duwe e148df
understand and debug and also in preparation for the introduction of
Torsten Duwe e148df
PFVF support in the qat_4xxx driver since QAT GEN4 devices have a
Torsten Duwe e148df
separate CSR for pf2vf and vf2pf communications.
Torsten Duwe e148df
Torsten Duwe e148df
Signed-off-by: Marco Chiappero <marco.chiappero@intel.com>
Torsten Duwe e148df
Reviewed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Torsten Duwe e148df
Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Torsten Duwe e148df
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Torsten Duwe e148df
Signed-off-by: Torsten Duwe <duwe@suse.de>
Torsten Duwe e148df
Torsten Duwe e148df
---
Torsten Duwe e148df
 drivers/crypto/qat/qat_common/adf_accel_devices.h |  1 +
Torsten Duwe e148df
 drivers/crypto/qat/qat_common/adf_gen2_pfvf.c     | 10 ++++++----
Torsten Duwe e148df
 drivers/crypto/qat/qat_common/adf_pf2vf_msg.c     |  6 +++---
Torsten Duwe e148df
 3 files changed, 10 insertions(+), 7 deletions(-)
Torsten Duwe e148df
Torsten Duwe e148df
diff --git a/drivers/crypto/qat/qat_common/adf_accel_devices.h b/drivers/crypto/qat/qat_common/adf_accel_devices.h
Torsten Duwe e148df
index a1baa65bd0342..d9b2cc935b616 100644
Torsten Duwe e148df
--- a/drivers/crypto/qat/qat_common/adf_accel_devices.h
Torsten Duwe e148df
+++ b/drivers/crypto/qat/qat_common/adf_accel_devices.h
Torsten Duwe e148df
@@ -150,6 +150,7 @@ struct adf_etr_ring_data;
Torsten Duwe e148df
 struct adf_pfvf_ops {
Torsten Duwe e148df
 	int (*enable_comms)(struct adf_accel_dev *accel_dev);
Torsten Duwe e148df
 	u32 (*get_pf2vf_offset)(u32 i);
Torsten Duwe e148df
+	u32 (*get_vf2pf_offset)(u32 i);
Torsten Duwe e148df
 	u32 (*get_vf2pf_sources)(void __iomem *pmisc_addr);
Torsten Duwe e148df
 	void (*enable_vf2pf_interrupts)(void __iomem *pmisc_addr, u32 vf_mask);
Torsten Duwe e148df
 	void (*disable_vf2pf_interrupts)(void __iomem *pmisc_addr, u32 vf_mask);
Torsten Duwe e148df
diff --git a/drivers/crypto/qat/qat_common/adf_gen2_pfvf.c b/drivers/crypto/qat/qat_common/adf_gen2_pfvf.c
Torsten Duwe e148df
index 36c8ff0096612..2f27146bb7c6e 100644
Torsten Duwe e148df
--- a/drivers/crypto/qat/qat_common/adf_gen2_pfvf.c
Torsten Duwe e148df
+++ b/drivers/crypto/qat/qat_common/adf_gen2_pfvf.c
Torsten Duwe e148df
@@ -12,12 +12,12 @@
Torsten Duwe e148df
 #define ADF_GEN2_PF_PF2VF_OFFSET(i)	(0x3A000 + 0x280 + ((i) * 0x04))
Torsten Duwe e148df
 #define ADF_GEN2_VF_PF2VF_OFFSET	0x200
Torsten Duwe e148df
 
Torsten Duwe e148df
-static u32 adf_gen2_pf_get_pf2vf_offset(u32 i)
Torsten Duwe e148df
+static u32 adf_gen2_pf_get_pfvf_offset(u32 i)
Torsten Duwe e148df
 {
Torsten Duwe e148df
 	return ADF_GEN2_PF_PF2VF_OFFSET(i);
Torsten Duwe e148df
 }
Torsten Duwe e148df
 
Torsten Duwe e148df
-static u32 adf_gen2_vf_get_pf2vf_offset(u32 i)
Torsten Duwe e148df
+static u32 adf_gen2_vf_get_pfvf_offset(u32 i)
Torsten Duwe e148df
 {
Torsten Duwe e148df
 	return ADF_GEN2_VF_PF2VF_OFFSET;
Torsten Duwe e148df
 }
Torsten Duwe e148df
@@ -64,7 +64,8 @@ static void adf_gen2_disable_vf2pf_interrupts(void __iomem *pmisc_addr,
Torsten Duwe e148df
 void adf_gen2_init_pf_pfvf_ops(struct adf_pfvf_ops *pfvf_ops)
Torsten Duwe e148df
 {
Torsten Duwe e148df
 	pfvf_ops->enable_comms = adf_enable_pf2vf_comms;
Torsten Duwe e148df
-	pfvf_ops->get_pf2vf_offset = adf_gen2_pf_get_pf2vf_offset;
Torsten Duwe e148df
+	pfvf_ops->get_pf2vf_offset = adf_gen2_pf_get_pfvf_offset;
Torsten Duwe e148df
+	pfvf_ops->get_vf2pf_offset = adf_gen2_pf_get_pfvf_offset;
Torsten Duwe e148df
 	pfvf_ops->get_vf2pf_sources = adf_gen2_get_vf2pf_sources;
Torsten Duwe e148df
 	pfvf_ops->enable_vf2pf_interrupts = adf_gen2_enable_vf2pf_interrupts;
Torsten Duwe e148df
 	pfvf_ops->disable_vf2pf_interrupts = adf_gen2_disable_vf2pf_interrupts;
Torsten Duwe e148df
@@ -74,6 +75,7 @@ EXPORT_SYMBOL_GPL(adf_gen2_init_pf_pfvf_ops);
Torsten Duwe e148df
 void adf_gen2_init_vf_pfvf_ops(struct adf_pfvf_ops *pfvf_ops)
Torsten Duwe e148df
 {
Torsten Duwe e148df
 	pfvf_ops->enable_comms = adf_enable_vf2pf_comms;
Torsten Duwe e148df
-	pfvf_ops->get_pf2vf_offset = adf_gen2_vf_get_pf2vf_offset;
Torsten Duwe e148df
+	pfvf_ops->get_pf2vf_offset = adf_gen2_vf_get_pfvf_offset;
Torsten Duwe e148df
+	pfvf_ops->get_vf2pf_offset = adf_gen2_vf_get_pfvf_offset;
Torsten Duwe e148df
 }
Torsten Duwe e148df
 EXPORT_SYMBOL_GPL(adf_gen2_init_vf_pfvf_ops);
Torsten Duwe e148df
diff --git a/drivers/crypto/qat/qat_common/adf_pf2vf_msg.c b/drivers/crypto/qat/qat_common/adf_pf2vf_msg.c
Torsten Duwe e148df
index 78dc8aea48667..c420ec03081b4 100644
Torsten Duwe e148df
--- a/drivers/crypto/qat/qat_common/adf_pf2vf_msg.c
Torsten Duwe e148df
+++ b/drivers/crypto/qat/qat_common/adf_pf2vf_msg.c
Torsten Duwe e148df
@@ -29,7 +29,7 @@ static int adf_iov_putmsg(struct adf_accel_dev *accel_dev, u32 msg, u8 vf_nr)
Torsten Duwe e148df
 	int ret;
Torsten Duwe e148df
 
Torsten Duwe e148df
 	if (accel_dev->is_vf) {
Torsten Duwe e148df
-		pf2vf_offset = hw_data->pfvf_ops.get_pf2vf_offset(0);
Torsten Duwe e148df
+		pf2vf_offset = hw_data->pfvf_ops.get_vf2pf_offset(0);
Torsten Duwe e148df
 		lock = &accel_dev->vf.vf2pf_lock;
Torsten Duwe e148df
 		local_in_use_mask = ADF_VF2PF_IN_USE_BY_VF_MASK;
Torsten Duwe e148df
 		local_in_use_pattern = ADF_VF2PF_IN_USE_BY_VF;
Torsten Duwe e148df
@@ -258,7 +258,7 @@ bool adf_recv_and_handle_vf2pf_msg(struct adf_accel_dev *accel_dev, u32 vf_nr)
Torsten Duwe e148df
 	u32 msg, resp = 0;
Torsten Duwe e148df
 
Torsten Duwe e148df
 	/* Read message from the VF */
Torsten Duwe e148df
-	msg = ADF_CSR_RD(pmisc_addr, hw_data->pfvf_ops.get_pf2vf_offset(vf_nr));
Torsten Duwe e148df
+	msg = ADF_CSR_RD(pmisc_addr, hw_data->pfvf_ops.get_vf2pf_offset(vf_nr));
Torsten Duwe e148df
 	if (!(msg & ADF_VF2PF_INT)) {
Torsten Duwe e148df
 		dev_info(&GET_DEV(accel_dev),
Torsten Duwe e148df
 			 "Spurious VF2PF interrupt, msg %X. Ignored\n", msg);
Torsten Duwe e148df
@@ -275,7 +275,7 @@ bool adf_recv_and_handle_vf2pf_msg(struct adf_accel_dev *accel_dev, u32 vf_nr)
Torsten Duwe e148df
 
Torsten Duwe e148df
 	/* To ACK, clear the VF2PFINT bit */
Torsten Duwe e148df
 	msg &= ~ADF_VF2PF_INT;
Torsten Duwe e148df
-	ADF_CSR_WR(pmisc_addr, hw_data->pfvf_ops.get_pf2vf_offset(vf_nr), msg);
Torsten Duwe e148df
+	ADF_CSR_WR(pmisc_addr, hw_data->pfvf_ops.get_vf2pf_offset(vf_nr), msg);
Torsten Duwe e148df
 
Torsten Duwe e148df
 	if (adf_handle_vf2pf_msg(accel_dev, vf_nr, msg, &resp))
Torsten Duwe e148df
 		return false;
Torsten Duwe e148df
-- 
Torsten Duwe e148df
2.35.3
Torsten Duwe e148df