|
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 |
|