|
Torsten Duwe |
371ac9 |
From 27c0f3a14f9fd16eed4e0167cf58225ca28ab4f8 Mon Sep 17 00:00:00 2001
|
|
Torsten Duwe |
371ac9 |
From: Marco Chiappero <marco.chiappero@intel.com>
|
|
Torsten Duwe |
371ac9 |
Date: Thu, 7 Apr 2022 17:54:48 +0100
|
|
Torsten Duwe |
371ac9 |
Subject: [PATCH] crypto: qat - test PFVF registers for spurious interrupts on
|
|
Torsten Duwe |
371ac9 |
GEN4
|
|
Torsten Duwe |
371ac9 |
Git-commit: 27c0f3a14f9fd16eed4e0167cf58225ca28ab4f8
|
|
Torsten Duwe |
371ac9 |
Patch-mainline: v5.19-rc1
|
|
Torsten Duwe |
371ac9 |
References: jsc#PED-1073
|
|
Torsten Duwe |
371ac9 |
|
|
Torsten Duwe |
371ac9 |
Spurious PFVF interrupts can happen when either the ISR is invoked
|
|
Torsten Duwe |
371ac9 |
without a valid source being set or, otherwise, when no interrupt bit
|
|
Torsten Duwe |
371ac9 |
is set in the PFVF register containing the message.
|
|
Torsten Duwe |
371ac9 |
|
|
Torsten Duwe |
371ac9 |
The latter test was present for GEN2 devices but missing for GEN4, this
|
|
Torsten Duwe |
371ac9 |
patch fills the gap.
|
|
Torsten Duwe |
371ac9 |
|
|
Torsten Duwe |
371ac9 |
Signed-off-by: Marco Chiappero <marco.chiappero@intel.com>
|
|
Torsten Duwe |
371ac9 |
Reviewed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
|
|
Torsten Duwe |
371ac9 |
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
|
Torsten Duwe |
371ac9 |
Signed-off-by: Torsten Duwe <duwe@suse.de>
|
|
Torsten Duwe |
371ac9 |
|
|
Torsten Duwe |
371ac9 |
---
|
|
Torsten Duwe |
371ac9 |
drivers/crypto/qat/qat_common/adf_gen4_pfvf.c | 6 ++++++
|
|
Torsten Duwe |
371ac9 |
1 file changed, 6 insertions(+)
|
|
Torsten Duwe |
371ac9 |
|
|
Torsten Duwe |
371ac9 |
diff --git a/drivers/crypto/qat/qat_common/adf_gen4_pfvf.c b/drivers/crypto/qat/qat_common/adf_gen4_pfvf.c
|
|
Torsten Duwe |
371ac9 |
index d80d493a77568..f7860bf612da9 100644
|
|
Torsten Duwe |
371ac9 |
--- a/drivers/crypto/qat/qat_common/adf_gen4_pfvf.c
|
|
Torsten Duwe |
371ac9 |
+++ b/drivers/crypto/qat/qat_common/adf_gen4_pfvf.c
|
|
Torsten Duwe |
371ac9 |
@@ -96,10 +96,16 @@ static struct pfvf_message adf_gen4_pfvf_recv(struct adf_accel_dev *accel_dev,
|
|
Torsten Duwe |
371ac9 |
u32 pfvf_offset, u8 compat_ver)
|
|
Torsten Duwe |
371ac9 |
{
|
|
Torsten Duwe |
371ac9 |
void __iomem *pmisc_addr = adf_get_pmisc_base(accel_dev);
|
|
Torsten Duwe |
371ac9 |
+ struct pfvf_message msg = { 0 };
|
|
Torsten Duwe |
371ac9 |
u32 csr_val;
|
|
Torsten Duwe |
371ac9 |
|
|
Torsten Duwe |
371ac9 |
/* Read message from the CSR */
|
|
Torsten Duwe |
371ac9 |
csr_val = ADF_CSR_RD(pmisc_addr, pfvf_offset);
|
|
Torsten Duwe |
371ac9 |
+ if (!(csr_val & ADF_PFVF_INT)) {
|
|
Torsten Duwe |
371ac9 |
+ dev_info(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
371ac9 |
+ "Spurious PFVF interrupt, msg 0x%.8x. Ignored\n", csr_val);
|
|
Torsten Duwe |
371ac9 |
+ return msg;
|
|
Torsten Duwe |
371ac9 |
+ }
|
|
Torsten Duwe |
371ac9 |
|
|
Torsten Duwe |
371ac9 |
/* We can now acknowledge the message reception by clearing the
|
|
Torsten Duwe |
371ac9 |
* interrupt bit
|
|
Torsten Duwe |
371ac9 |
--
|
|
Torsten Duwe |
371ac9 |
2.35.3
|
|
Torsten Duwe |
371ac9 |
|