crypto: qat - disable IOV in adf_dev_stop()
authorMichal Witwicki <michal.witwicki@intel.com>
Wed, 17 Jul 2024 11:44:57 +0000 (07:44 -0400)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 2 Aug 2024 13:11:20 +0000 (21:11 +0800)
Disabling IOV has the side effect of re-enabling the AEs that might
attempt to do DMAs into the heartbeat buffers.
Move the disable_iov() function in adf_dev_stop() before the AEs are
stopped.

Fixes: ed8ccaef52fa ("crypto: qat - Add support for SRIOV")
Signed-off-by: Michal Witwicki <michal.witwicki@intel.com>
Reviewed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/intel/qat/qat_common/adf_init.c

index 593fe9abe88cf01859a3af50fef07f94a411ada2..f189cce7d153584bbdd0f7930a7d07333c9c548f 100644 (file)
@@ -323,6 +323,8 @@ static void adf_dev_stop(struct adf_accel_dev *accel_dev)
        if (hw_data->stop_timer)
                hw_data->stop_timer(accel_dev);
 
+       hw_data->disable_iov(accel_dev);
+
        if (wait)
                msleep(100);
 
@@ -386,8 +388,6 @@ static void adf_dev_shutdown(struct adf_accel_dev *accel_dev)
 
        adf_tl_shutdown(accel_dev);
 
-       hw_data->disable_iov(accel_dev);
-
        if (test_bit(ADF_STATUS_IRQ_ALLOCATED, &accel_dev->status)) {
                hw_data->free_irq(accel_dev);
                clear_bit(ADF_STATUS_IRQ_ALLOCATED, &accel_dev->status);