crypto: hisilicon/qm - initialize the device before doing tasks
authorWeili Qian <qianweili@huawei.com>
Sat, 15 May 2021 10:44:37 +0000 (18:44 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Sun, 23 May 2021 00:52:41 +0000 (08:52 +0800)
The device needs to be initialized first, and then restart the queue to
execute tasks after PF 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 ce439a0c66c9ed534ebab22ec6261c66f60ffa86..6a9c18f948769cf464d6ce171ad09eae1a2bfb14 100644 (file)
@@ -4085,6 +4085,14 @@ void hisi_qm_reset_done(struct pci_dev *pdev)
        struct hisi_qm *qm = pci_get_drvdata(pdev);
        int ret;
 
+       if (qm->fun_type == QM_HW_PF) {
+               ret = qm_dev_hw_init(qm);
+               if (ret) {
+                       pci_err(pdev, "Failed to init PF, ret = %d.\n", ret);
+                       goto flr_done;
+               }
+       }
+
        hisi_qm_dev_err_init(pf_qm);
 
        ret = qm_restart(qm);
@@ -4094,12 +4102,6 @@ void hisi_qm_reset_done(struct pci_dev *pdev)
        }
 
        if (qm->fun_type == QM_HW_PF) {
-               ret = qm_dev_hw_init(qm);
-               if (ret) {
-                       pci_err(pdev, "Failed to init PF, ret = %d.\n", ret);
-                       goto flr_done;
-               }
-
                if (!qm->vfs_num)
                        goto flr_done;