crypto: hisilicon/qm - re-enable communicate interrupt before notifying PF
authorWeili Qian <qianweili@huawei.com>
Sat, 24 Sep 2022 11:04:31 +0000 (19:04 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 21 Oct 2022 11:05:23 +0000 (19:05 +0800)
After the device is reset, the VF needs to re-enable communication
interrupt before the VF sends restart complete message to the PF.
If the interrupt is re-enabled after the VF notifies the PF, the PF
may fail to send messages to the VF after receiving VF's restart
complete message.

Fixes: 760fe22cf5e9 ("crypto: hisilicon/qm - update reset flow")
Signed-off-by: Weili Qian <qianweili@huawei.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/hisilicon/qm.c

index 01c083e2c4bd3f1bd6419a4c3ed44f9c4832ac94..e3edb176d9765fadbbc31c7bcc9ee1d0ab5afb7e 100644 (file)
@@ -5723,6 +5723,7 @@ static void qm_pf_reset_vf_done(struct hisi_qm *qm)
                cmd = QM_VF_START_FAIL;
        }
 
+       qm_cmd_init(qm);
        ret = qm_ping_pf(qm, cmd);
        if (ret)
                dev_warn(&pdev->dev, "PF responds timeout in reset done!\n");
@@ -5784,7 +5785,6 @@ static void qm_pf_reset_vf_process(struct hisi_qm *qm,
                goto err_get_status;
 
        qm_pf_reset_vf_done(qm);
-       qm_cmd_init(qm);
 
        dev_info(dev, "device reset done.\n");