| From 6e2921b344c669d64aa9d197bc05c5b0a8d8eb2d Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sun, 27 Oct 2019 22:04:49 +0200 |
| Subject: RDMA/qedr: Fix qpids xarray api used |
| |
| From: Michal Kalderon <michal.kalderon@marvell.com> |
| |
| [ Upstream commit 5fdff18b4dc64e2d1e912ad2b90495cd487f791b ] |
| |
| The qpids xarray isn't accessed from irq context and therefore there |
| is no need to use the xa_XXX_irq version of the apis. |
| Remove the _irq. |
| |
| Fixes: b6014f9e5f39 ("qedr: Convert qpidr to XArray") |
| Link: https://lore.kernel.org/r/20191027200451.28187-3-michal.kalderon@marvell.com |
| Signed-off-by: Ariel Elior <ariel.elior@marvell.com> |
| Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com> |
| Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/infiniband/hw/qedr/main.c | 2 +- |
| drivers/infiniband/hw/qedr/qedr_iw_cm.c | 2 +- |
| drivers/infiniband/hw/qedr/verbs.c | 4 ++-- |
| 3 files changed, 4 insertions(+), 4 deletions(-) |
| |
| diff --git a/drivers/infiniband/hw/qedr/main.c b/drivers/infiniband/hw/qedr/main.c |
| index b462eaca1ee3..4494dab8c3d8 100644 |
| --- a/drivers/infiniband/hw/qedr/main.c |
| +++ b/drivers/infiniband/hw/qedr/main.c |
| @@ -360,7 +360,7 @@ static int qedr_alloc_resources(struct qedr_dev *dev) |
| xa_init_flags(&dev->srqs, XA_FLAGS_LOCK_IRQ); |
| |
| if (IS_IWARP(dev)) { |
| - xa_init_flags(&dev->qps, XA_FLAGS_LOCK_IRQ); |
| + xa_init(&dev->qps); |
| dev->iwarp_wq = create_singlethread_workqueue("qedr_iwarpq"); |
| } |
| |
| diff --git a/drivers/infiniband/hw/qedr/qedr_iw_cm.c b/drivers/infiniband/hw/qedr/qedr_iw_cm.c |
| index 22881d4442b9..7fea74739c1f 100644 |
| --- a/drivers/infiniband/hw/qedr/qedr_iw_cm.c |
| +++ b/drivers/infiniband/hw/qedr/qedr_iw_cm.c |
| @@ -739,7 +739,7 @@ void qedr_iw_qp_rem_ref(struct ib_qp *ibqp) |
| struct qedr_qp *qp = get_qedr_qp(ibqp); |
| |
| if (atomic_dec_and_test(&qp->refcnt)) { |
| - xa_erase_irq(&qp->dev->qps, qp->qp_id); |
| + xa_erase(&qp->dev->qps, qp->qp_id); |
| kfree(qp); |
| } |
| } |
| diff --git a/drivers/infiniband/hw/qedr/verbs.c b/drivers/infiniband/hw/qedr/verbs.c |
| index a7ccca3c4f89..062165935441 100644 |
| --- a/drivers/infiniband/hw/qedr/verbs.c |
| +++ b/drivers/infiniband/hw/qedr/verbs.c |
| @@ -1926,7 +1926,7 @@ struct ib_qp *qedr_create_qp(struct ib_pd *ibpd, |
| qp->ibqp.qp_num = qp->qp_id; |
| |
| if (rdma_protocol_iwarp(&dev->ibdev, 1)) { |
| - rc = xa_insert_irq(&dev->qps, qp->qp_id, qp, GFP_KERNEL); |
| + rc = xa_insert(&dev->qps, qp->qp_id, qp, GFP_KERNEL); |
| if (rc) |
| goto err; |
| } |
| @@ -2500,7 +2500,7 @@ int qedr_destroy_qp(struct ib_qp *ibqp, struct ib_udata *udata) |
| |
| if (atomic_dec_and_test(&qp->refcnt) && |
| rdma_protocol_iwarp(&dev->ibdev, 1)) { |
| - xa_erase_irq(&dev->qps, qp->qp_id); |
| + xa_erase(&dev->qps, qp->qp_id); |
| kfree(qp); |
| } |
| return 0; |
| -- |
| 2.25.1 |
| |