crypto: hisilicon/qm - remove unnecessary device memory reset
authorWeili Qian <qianweili@huawei.com>
Sat, 11 Dec 2021 11:25:14 +0000 (19:25 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 17 Dec 2021 05:59:48 +0000 (16:59 +1100)
The internal memory of the device needs to be reset only when
the device is globally initialized. Other scenarios, such as
function reset, do not need to perform reset.

Signed-off-by: Weili Qian <qianweili@huawei.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/hisilicon/qm.c

index bea8622..fba6a26 100644 (file)
@@ -3581,10 +3581,6 @@ static int __hisi_qm_start(struct hisi_qm *qm)
        WARN_ON(!qm->qdma.va);
 
        if (qm->fun_type == QM_HW_PF) {
-               ret = qm_dev_mem_reset(qm);
-               if (ret)
-                       return ret;
-
                ret = hisi_qm_set_vft(qm, 0, qm->qp_base, qm->qp_num);
                if (ret)
                        return ret;
@@ -5083,6 +5079,12 @@ static int qm_controller_reset_done(struct hisi_qm *qm)
        if (qm->err_ini->open_axi_master_ooo)
                qm->err_ini->open_axi_master_ooo(qm);
 
+       ret = qm_dev_mem_reset(qm);
+       if (ret) {
+               pci_err(pdev, "failed to reset device memory\n");
+               return ret;
+       }
+
        ret = qm_restart(qm);
        if (ret) {
                pci_err(pdev, "Failed to start QM!\n");
@@ -5857,6 +5859,14 @@ int hisi_qm_init(struct hisi_qm *qm)
                        goto err_irq_register;
        }
 
+       if (qm->fun_type == QM_HW_PF) {
+               ret = qm_dev_mem_reset(qm);
+               if (ret) {
+                       dev_err(dev, "failed to reset device memory\n");
+                       goto err_irq_register;
+               }
+       }
+
        if (qm->mode == UACCE_MODE_SVA) {
                ret = qm_alloc_uacce(qm);
                if (ret < 0)
@@ -6014,8 +6024,11 @@ static int qm_rebuild_for_resume(struct hisi_qm *qm)
 
        qm_cmd_init(qm);
        hisi_qm_dev_err_init(qm);
+       ret = qm_dev_mem_reset(qm);
+       if (ret)
+               pci_err(pdev, "failed to reset device memory\n");
 
-       return 0;
+       return ret;
 }
 
 /**