[ Sasha's backport helper bot ] Hi, The upstream commit SHA1 provided is correct: b04f06fc0243600665b3b50253869533b7938468 WARNING: Author mismatch between patch and upstream commit: Backport author: libo.chen.cn@xxxxxxxxxxxxxxxxx Commit author: Weili Qian <qianweili@xxxxxxxxxx> Status in newer kernel trees: 6.12.y | Present (exact SHA1) 6.6.y | Present (different SHA1: aa3e0db35a60) 6.1.y | Present (different SHA1: 98d3be34c915) 5.15.y | Not found Note: The patch differs from the upstream commit: --- 1: b04f06fc02436 ! 1: 1b1ca18bef09c crypto: hisilicon/qm - inject error before stopping queue @@ Metadata ## Commit message ## crypto: hisilicon/qm - inject error before stopping queue + [ Upstream commit b04f06fc0243600665b3b50253869533b7938468 ] + The master ooo cannot be completely closed when the accelerator core reports memory error. Therefore, the driver needs to inject the qm error to close the master ooo. Currently, @@ Commit message Fixes: 6c6dd5802c2d ("crypto: hisilicon/qm - add controller reset interface") Signed-off-by: Weili Qian <qianweili@xxxxxxxxxx> Signed-off-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> + Signed-off-by: Libo Chen <libo.chen.cn@xxxxxxxxxxxxx> ## drivers/crypto/hisilicon/qm.c ## @@ drivers/crypto/hisilicon/qm.c: static int qm_set_vf_mse(struct hisi_qm *qm, bool set) @@ drivers/crypto/hisilicon/qm.c: static int qm_controller_reset_prepare(struct his /* PF obtains the information of VF by querying the register. */ qm_cmd_uninit(qm); -@@ drivers/crypto/hisilicon/qm.c: static int qm_master_ooo_check(struct hisi_qm *qm) - return ret; +@@ drivers/crypto/hisilicon/qm.c: static int qm_controller_reset_prepare(struct hisi_qm *qm) + return 0; } -static void qm_dev_ecc_mbit_handle(struct hisi_qm *qm) @@ drivers/crypto/hisilicon/qm.c: static int qm_master_ooo_check(struct hisi_qm *qm - if (!qm->err_status.is_dev_ecc_mbit && - qm->err_status.is_qm_ecc_mbit && - qm->err_ini->close_axi_master_ooo) { +- - qm->err_ini->close_axi_master_ooo(qm); +- - } else if (qm->err_status.is_dev_ecc_mbit && - !qm->err_status.is_qm_ecc_mbit && - !qm->err_ini->close_axi_master_ooo) { +- - nfe_enb = readl(qm->io_base + QM_RAS_NFE_ENABLE); - writel(nfe_enb & QM_RAS_NFE_MBIT_DISABLE, - qm->io_base + QM_RAS_NFE_ENABLE); @@ drivers/crypto/hisilicon/qm.c: static int qm_master_ooo_check(struct hisi_qm *qm - } -} - - static int qm_soft_reset_prepare(struct hisi_qm *qm) + static int qm_soft_reset(struct hisi_qm *qm) { struct pci_dev *pdev = qm->pdev; -@@ drivers/crypto/hisilicon/qm.c: static int qm_soft_reset_prepare(struct hisi_qm *qm) +@@ drivers/crypto/hisilicon/qm.c: static int qm_soft_reset(struct hisi_qm *qm) return ret; } - qm_dev_ecc_mbit_handle(qm); - ret = qm_master_ooo_check(qm); - if (ret) - return ret; +- + /* OOO register set and check */ + writel(ACC_MASTER_GLOBAL_CTRL_SHUTDOWN, + qm->io_base + ACC_MASTER_GLOBAL_CTRL); --- Results of testing on various branches: | Branch | Patch Apply | Build Test | |---------------------------|-------------|------------| | stable/linux-5.15.y | Success | Success |