Message ID | 20220110174035.24728-2-taihsiang.ho@canonical.com |
---|---|
State | New |
Headers | show |
Series | crypto: hisilicon/qm - modify the uacce mode check | expand |
On 10.01.22 18:40, Taihsiang Ho (tai271828) wrote: > From: Kai Ye <yekai13@huawei.com> > > BugLink: https://bugs.launchpad.net/kunpeng920/+bug/1933301 This ^buglink should be https://bugs.launchpad.net/bugs/1933301 which can be done when applying. > > As qm should register to uacce in UACCE_DEV_SVA mode, > this patch modifies to checks uacce mode before doing uacce > registration. > > Signed-off-by: Kai Ye <yekai13@huawei.com> > Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> > (cherry picked from commit 183b60e005975d3c84c22199ca64a9221e620fb6) > Signed-off-by: Taihsiang Ho (tai271828) <taihsiang.ho@canonical.com> Acked-by: Stefan Bader <stefan.bader@canonical.com> > --- > drivers/crypto/hisilicon/qm.c | 22 ++++++++++++++-------- > 1 file changed, 14 insertions(+), 8 deletions(-) > > diff --git a/drivers/crypto/hisilicon/qm.c b/drivers/crypto/hisilicon/qm.c > index ce439a0c66c9..5c750922fdb6 100644 > --- a/drivers/crypto/hisilicon/qm.c > +++ b/drivers/crypto/hisilicon/qm.c > @@ -2358,7 +2358,7 @@ static int qm_alloc_uacce(struct hisi_qm *qm) > if (IS_ERR(uacce)) > return PTR_ERR(uacce); > > - if (uacce->flags & UACCE_DEV_SVA && qm->mode == UACCE_MODE_SVA) { > + if (uacce->flags & UACCE_DEV_SVA) { > qm->use_sva = true; > } else { > /* only consider sva case */ > @@ -2653,8 +2653,10 @@ void hisi_qm_uninit(struct hisi_qm *qm) > > qm_irq_unregister(qm); > hisi_qm_pci_uninit(qm); > - uacce_remove(qm->uacce); > - qm->uacce = NULL; > + if (qm->use_sva) { > + uacce_remove(qm->uacce); > + qm->uacce = NULL; > + } > > up_write(&qm->qps_lock); > } > @@ -4418,9 +4420,11 @@ int hisi_qm_init(struct hisi_qm *qm) > goto err_irq_register; > } > > - ret = qm_alloc_uacce(qm); > - if (ret < 0) > - dev_warn(dev, "fail to alloc uacce (%d)\n", ret); > + if (qm->mode == UACCE_MODE_SVA) { > + ret = qm_alloc_uacce(qm); > + if (ret < 0) > + dev_warn(dev, "fail to alloc uacce (%d)\n", ret); > + } > > ret = hisi_qm_memory_init(qm); > if (ret) > @@ -4435,8 +4439,10 @@ int hisi_qm_init(struct hisi_qm *qm) > return 0; > > err_alloc_uacce: > - uacce_remove(qm->uacce); > - qm->uacce = NULL; > + if (qm->use_sva) { > + uacce_remove(qm->uacce); > + qm->uacce = NULL; > + } > err_irq_register: > qm_irq_unregister(qm); > err_pci_init: >
diff --git a/drivers/crypto/hisilicon/qm.c b/drivers/crypto/hisilicon/qm.c index ce439a0c66c9..5c750922fdb6 100644 --- a/drivers/crypto/hisilicon/qm.c +++ b/drivers/crypto/hisilicon/qm.c @@ -2358,7 +2358,7 @@ static int qm_alloc_uacce(struct hisi_qm *qm) if (IS_ERR(uacce)) return PTR_ERR(uacce); - if (uacce->flags & UACCE_DEV_SVA && qm->mode == UACCE_MODE_SVA) { + if (uacce->flags & UACCE_DEV_SVA) { qm->use_sva = true; } else { /* only consider sva case */ @@ -2653,8 +2653,10 @@ void hisi_qm_uninit(struct hisi_qm *qm) qm_irq_unregister(qm); hisi_qm_pci_uninit(qm); - uacce_remove(qm->uacce); - qm->uacce = NULL; + if (qm->use_sva) { + uacce_remove(qm->uacce); + qm->uacce = NULL; + } up_write(&qm->qps_lock); } @@ -4418,9 +4420,11 @@ int hisi_qm_init(struct hisi_qm *qm) goto err_irq_register; } - ret = qm_alloc_uacce(qm); - if (ret < 0) - dev_warn(dev, "fail to alloc uacce (%d)\n", ret); + if (qm->mode == UACCE_MODE_SVA) { + ret = qm_alloc_uacce(qm); + if (ret < 0) + dev_warn(dev, "fail to alloc uacce (%d)\n", ret); + } ret = hisi_qm_memory_init(qm); if (ret) @@ -4435,8 +4439,10 @@ int hisi_qm_init(struct hisi_qm *qm) return 0; err_alloc_uacce: - uacce_remove(qm->uacce); - qm->uacce = NULL; + if (qm->use_sva) { + uacce_remove(qm->uacce); + qm->uacce = NULL; + } err_irq_register: qm_irq_unregister(qm); err_pci_init: