crypto: hisilicon/qm - fix the uacce mmap failed
authorKai Ye <yekai13@huawei.com>
Sat, 28 Aug 2021 03:39:38 +0000 (11:39 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 17 Sep 2021 03:05:11 +0000 (11:05 +0800)
Allocate an extra memory page for qp. This extra page is
used to set the device or qp status. But this page not
be used currently. Meanwhile it leads to dus size not equal
to mmap size as using uacce sva mode, and cause the app task
broken.

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

index cf9ec5625a1e6863723b98f3de50473a2a1e6d11..88ec66b347665f94850111a12852676dc5b00906 100644 (file)
@@ -3122,8 +3122,10 @@ static int qm_alloc_uacce(struct hisi_qm *qm)
        else
                mmio_page_nr = qm->db_interval / PAGE_SIZE;
 
+       /* Add one more page for device or qp status */
        dus_page_nr = (PAGE_SIZE - 1 + qm->sqe_size * QM_Q_DEPTH +
-                      sizeof(struct qm_cqe) * QM_Q_DEPTH) >> PAGE_SHIFT;
+                      sizeof(struct qm_cqe) * QM_Q_DEPTH  + PAGE_SIZE) >>
+                                        PAGE_SHIFT;
 
        uacce->qf_pg_num[UACCE_QFRT_MMIO] = mmio_page_nr;
        uacce->qf_pg_num[UACCE_QFRT_DUS]  = dus_page_nr;