summaryrefslogtreecommitdiff
path: root/drivers/crypto/qat/qat_common/adf_accel_devices.h
diff options
context:
space:
mode:
authorMaksim Lukoshkov <maksim.lukoshkov@intel.com>2021-09-01 20:36:07 +0300
committerHerbert Xu <herbert@gondor.apana.org.au>2021-09-17 06:05:12 +0300
commit9832fdc917de0f28772558688d7fa6c097c9c6cc (patch)
tree2cb9e8cb4a353dca3486f79667610c09a23d6611 /drivers/crypto/qat/qat_common/adf_accel_devices.h
parent0e64dcd7c94b94f90b820bfbe57bbcea8bf21545 (diff)
downloadlinux-9832fdc917de0f28772558688d7fa6c097c9c6cc.tar.xz
crypto: qat - free irqs only if allocated
Change the irq allocation logic so that it is possible to free only the allocated irqs in case of error. A new flag is introduced for every PF/VF interrupt. This flag is set to "true" only when the interrupt is requested. During clean up, devm_free_irq() is only called if this flag is set. Signed-off-by: Maksim Lukoshkov <maksim.lukoshkov@intel.com> Co-developed-by: Wojciech Ziemba <wojciech.ziemba@intel.com> Signed-off-by: Wojciech Ziemba <wojciech.ziemba@intel.com> Reviewed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto/qat/qat_common/adf_accel_devices.h')
-rw-r--r--drivers/crypto/qat/qat_common/adf_accel_devices.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/crypto/qat/qat_common/adf_accel_devices.h b/drivers/crypto/qat/qat_common/adf_accel_devices.h
index 87de40d6c9a5..e391ca0662bc 100644
--- a/drivers/crypto/qat/qat_common/adf_accel_devices.h
+++ b/drivers/crypto/qat/qat_common/adf_accel_devices.h
@@ -44,8 +44,13 @@ struct adf_bar {
resource_size_t size;
} __packed;
+struct adf_irq {
+ bool enabled;
+ char name[ADF_MAX_MSIX_VECTOR_NAME];
+};
+
struct adf_accel_msix {
- char **names;
+ struct adf_irq *irqs;
u32 num_entries;
} __packed;
@@ -250,7 +255,8 @@ struct adf_accel_dev {
struct adf_accel_vf_info *vf_info;
} pf;
struct {
- char *irq_name;
+ bool irq_enabled;
+ char irq_name[ADF_MAX_MSIX_VECTOR_NAME];
struct tasklet_struct pf2vf_bh_tasklet;
struct mutex vf2pf_lock; /* protect CSR access */
struct completion iov_msg_completion;