crypto: qat - disable arbitration before reset
authorFurong Zhou <furong.zhou@intel.com>
Fri, 2 Feb 2024 10:53:18 +0000 (18:53 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 9 Feb 2024 04:57:18 +0000 (12:57 +0800)
Disable arbitration to avoid new requests to be processed before
resetting a device.

This is needed so that new requests are not fetched when an error is
detected.

Signed-off-by: Furong Zhou <furong.zhou@intel.com>
Reviewed-by: Ahsan Atta <ahsan.atta@intel.com>
Reviewed-by: Markas Rapoportas <markas.rapoportas@intel.com>
Reviewed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Signed-off-by: Mun Chun Yep <mun.chun.yep@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/intel/qat/qat_common/adf_aer.c

index 22a43b4b8315db5f258e2ed6ce2e60b824356dcd..acbbd32bd81576addf94e8560b02548e1ecf0ffe 100644 (file)
@@ -181,8 +181,16 @@ static void adf_notify_fatal_error_worker(struct work_struct *work)
        struct adf_fatal_error_data *wq_data =
                        container_of(work, struct adf_fatal_error_data, work);
        struct adf_accel_dev *accel_dev = wq_data->accel_dev;
+       struct adf_hw_device_data *hw_device = accel_dev->hw_device;
 
        adf_error_notifier(accel_dev);
+
+       if (!accel_dev->is_vf) {
+               /* Disable arbitration to stop processing of new requests */
+               if (hw_device->exit_arb)
+                       hw_device->exit_arb(accel_dev);
+       }
+
        kfree(wq_data);
 }