aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/crypto/atmel-tdes.c
diff options
context:
space:
mode:
authorKanchana Velusamy <kanchanax.velusamy@intel.com>2021-08-12 21:21:21 +0100
committerHerbert Xu <herbert@gondor.apana.org.au>2021-08-21 15:44:56 +0800
commit07df385e645ed3b7fd3ac2d5c4c3e825b54bb7e4 (patch)
tree6c2aa3d8386e8df54c2b1f108766faf17a47063f /drivers/crypto/atmel-tdes.c
parentcrypto: qat - move pf2vf interrupt [en|dis]able to adf_vf_isr.c (diff)
downloadlinux-dev-07df385e645ed3b7fd3ac2d5c4c3e825b54bb7e4.tar.xz
linux-dev-07df385e645ed3b7fd3ac2d5c4c3e825b54bb7e4.zip
crypto: qat - protect interrupt mask CSRs with a spinlock
In the PF interrupt handler, the interrupt is disabled for a set of VFs by writing to the interrupt source mask register, ERRMSK. The interrupt is re-enabled in the bottom half handler by writing to the same CSR. This is done through the functions enable_vf2pf_interrupts() and disable_vf2pf_interrupts() which perform a read-modify-write operation on the ERRMSK registers to mask and unmask the source of interrupt. There can be a race condition where the top half handler for one VF interrupt runs just as the bottom half for another VF is about to re-enable the interrupt. Depending on whether the top or bottom half updates the CSR first, this would result either in a spurious interrupt or in the interrupt not being re-enabled. This patch protects the access of ERRMSK with a spinlock. The functions adf_enable_vf2pf_interrupts() and adf_disable_vf2pf_interrupts() have been changed to acquire a spin lock before accessing and modifying the ERRMSK registers. These functions use spin_lock_irqsave() to disable IRQs and avoid potential deadlocks. In addition, the function adf_disable_vf2pf_interrupts_irq() has been added. This uses spin_lock() and it is meant to be used in the top half only. Signed-off-by: Kanchana Velusamy <kanchanax.velusamy@intel.com> Co-developed-by: Marco Chiappero <marco.chiappero@intel.com> Signed-off-by: Marco Chiappero <marco.chiappero@intel.com> Co-developed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com> Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com> Reviewed-by: Fiona Trahe <fiona.trahe@intel.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto/atmel-tdes.c')
0 files changed, 0 insertions, 0 deletions