OSDN Git Service

crypto: qat - refactor device restart logic
authorShashank Gupta <shashank.gupta@intel.com>
Mon, 27 Feb 2023 20:55:44 +0000 (15:55 -0500)
committerHerbert Xu <herbert@gondor.apana.org.au>
Tue, 14 Mar 2023 09:06:44 +0000 (17:06 +0800)
Refactor the restart logic by moving it into the function
adf_dev_restart() which uses the safe function adf_dev_up() and
adf_dev_down().

This commit does not implement any functional change.

Signed-off-by: Shashank Gupta <shashank.gupta@intel.com>
Reviewed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/qat/qat_common/adf_aer.c
drivers/crypto/qat/qat_common/adf_common_drv.h
drivers/crypto/qat/qat_common/adf_init.c

index fe9bb2f..9fa76c5 100644 (file)
@@ -90,9 +90,7 @@ static void adf_device_reset_worker(struct work_struct *work)
        struct adf_accel_dev *accel_dev = reset_data->accel_dev;
 
        adf_dev_restarting_notify(accel_dev);
-       adf_dev_stop(accel_dev);
-       adf_dev_shutdown(accel_dev);
-       if (adf_dev_init(accel_dev) || adf_dev_start(accel_dev)) {
+       if (adf_dev_restart(accel_dev)) {
                /* The device hanged and we can't restart it so stop here */
                dev_err(&GET_DEV(accel_dev), "Restart device failed\n");
                kfree(reset_data);
index 4bf1fce..3666109 100644 (file)
@@ -60,6 +60,7 @@ int adf_dev_shutdown_cache_cfg(struct adf_accel_dev *accel_dev);
 
 int adf_dev_up(struct adf_accel_dev *accel_dev, bool init_config);
 int adf_dev_down(struct adf_accel_dev *accel_dev, bool cache_config);
+int adf_dev_restart(struct adf_accel_dev *accel_dev);
 
 void adf_devmgr_update_class_index(struct adf_hw_device_data *hw_data);
 void adf_clean_vf_map(bool);
index 988cffd..11ade5d 100644 (file)
@@ -464,3 +464,21 @@ out:
        return ret;
 }
 EXPORT_SYMBOL_GPL(adf_dev_up);
+
+int adf_dev_restart(struct adf_accel_dev *accel_dev)
+{
+       int ret = 0;
+
+       if (!accel_dev)
+               return -EFAULT;
+
+       adf_dev_down(accel_dev, false);
+
+       ret = adf_dev_up(accel_dev, false);
+       /* if device is already up return success*/
+       if (ret == -EALREADY)
+               return 0;
+
+       return ret;
+}
+EXPORT_SYMBOL_GPL(adf_dev_restart);