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>
        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);
        }
 
        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;