mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 04:21:09 -04:00
crypto: qat - disable 4xxx AE cluster when lead engine is fused off
The get_ae_mask() function only disables individual engines based on
the fuse register, but engines are organized in clusters of 4. If the
lead engine of a cluster is fused off, the entire cluster must be
disabled.
Replace the single bitmask inversion with explicit test_bit() checks
on the lead engine of each group, disabling the full ADF_AE_GROUP
when the lead bit is set.
Signed-off-by: Ahsan Atta <ahsan.atta@intel.com>
Reviewed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Fixes: 8c8268166e ("crypto: qat - add qat_4xxx driver")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
@@ -100,9 +100,19 @@ static struct adf_hw_device_class adf_4xxx_class = {
|
||||
|
||||
static u32 get_ae_mask(struct adf_hw_device_data *self)
|
||||
{
|
||||
u32 me_disable = self->fuses[ADF_FUSECTL4];
|
||||
unsigned long fuses = self->fuses[ADF_FUSECTL4];
|
||||
u32 mask = ADF_4XXX_ACCELENGINES_MASK;
|
||||
|
||||
return ~me_disable & ADF_4XXX_ACCELENGINES_MASK;
|
||||
if (test_bit(0, &fuses))
|
||||
mask &= ~ADF_AE_GROUP_0;
|
||||
|
||||
if (test_bit(4, &fuses))
|
||||
mask &= ~ADF_AE_GROUP_1;
|
||||
|
||||
if (test_bit(8, &fuses))
|
||||
mask &= ~ADF_AE_GROUP_2;
|
||||
|
||||
return mask;
|
||||
}
|
||||
|
||||
static u32 get_accel_cap(struct adf_accel_dev *accel_dev)
|
||||
|
||||
Reference in New Issue
Block a user