mbox series

[rdma-next,v2,0/4] Mark create/destroy address handle calls as atomic/sleepable

Message ID 1544605748-20791-1-git-send-email-galpress@amazon.com (mailing list archive)
Headers show
Series Mark create/destroy address handle calls as atomic/sleepable | expand

Message

Gal Pressman Dec. 12, 2018, 9:09 a.m. UTC
Hi Jason and Doug,
This patchset adds a new 'flags' field to create/destroy address handle flow
and a flag that marks whether the callback is executed in a sleepable context
in order to allow drivers to wait for device completion instead of busy polling
when possible.

Patches #1, #2 add the flag to create/destroy AH callbacks and change all the
drivers, patches #3, #4 change bnxt_re driver to make use of the flag and not
poll for firmware completion.

Note that I left the bool function parameter in the bnxt_re internal qplib
calls because that's consistent with all other functions, changed it anywhere
else.

Changelog:
v1->v2:
* Rebased on top of rdmavt callbacks fixes by Kamal and adjust the callbacks accordingly
* Use flags and an enum instead of bool flag
* Make bnxt_re_create_shadow_qp_ah call create AH as sleepable (changed from non-sleepable)
* Make bnxt_re_destroy_qp call destroy AH as sleepable (changed from non-sleepable)

Thanks,
Gal

Gal Pressman (4):
  RDMA: Mark if create address handle is in a sleepable context
  RDMA: Mark if destroy address handle is in a sleepable context
  RDMA/bnxt_re: Make use of create AH sleepable flag
  RDMA/bnxt_re: Make use of destroy AH sleepable flag

 drivers/infiniband/core/agent.c                 |  4 ++--
 drivers/infiniband/core/cm.c                    |  6 +++---
 drivers/infiniband/core/mad_rmpp.c              | 10 ++++-----
 drivers/infiniband/core/sa_query.c              |  5 +++--
 drivers/infiniband/core/user_mad.c              |  4 ++--
 drivers/infiniband/core/uverbs_cmd.c            |  2 +-
 drivers/infiniband/core/uverbs_std_types.c      |  3 ++-
 drivers/infiniband/core/verbs.c                 | 21 ++++++++++++-------
 drivers/infiniband/hw/bnxt_re/ib_verbs.c        | 13 +++++++-----
 drivers/infiniband/hw/bnxt_re/ib_verbs.h        |  3 ++-
 drivers/infiniband/hw/bnxt_re/qplib_sp.c        | 10 +++++----
 drivers/infiniband/hw/bnxt_re/qplib_sp.h        |  6 ++++--
 drivers/infiniband/hw/hfi1/mad.c                |  2 +-
 drivers/infiniband/hw/hns/hns_roce_ah.c         |  3 ++-
 drivers/infiniband/hw/hns/hns_roce_device.h     |  3 ++-
 drivers/infiniband/hw/mlx4/ah.c                 |  6 +++---
 drivers/infiniband/hw/mlx4/mad.c                | 28 ++++++++++++-------------
 drivers/infiniband/hw/mlx4/mlx4_ib.h            |  4 ++--
 drivers/infiniband/hw/mlx5/ah.c                 |  4 ++--
 drivers/infiniband/hw/mlx5/mlx5_ib.h            |  4 ++--
 drivers/infiniband/hw/mthca/mthca_mad.c         |  7 ++++---
 drivers/infiniband/hw/mthca/mthca_provider.c    |  3 ++-
 drivers/infiniband/hw/ocrdma/ocrdma_ah.c        |  4 ++--
 drivers/infiniband/hw/ocrdma/ocrdma_ah.h        |  4 ++--
 drivers/infiniband/hw/qedr/verbs.c              |  4 ++--
 drivers/infiniband/hw/qedr/verbs.h              |  4 ++--
 drivers/infiniband/hw/qib/qib_mad.c             |  3 ++-
 drivers/infiniband/hw/qib/qib_verbs.c           |  2 +-
 drivers/infiniband/hw/usnic/usnic_ib_verbs.c    |  3 ++-
 drivers/infiniband/hw/usnic/usnic_ib_verbs.h    |  3 ++-
 drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.c |  6 ++++--
 drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h |  4 ++--
 drivers/infiniband/sw/rdmavt/ah.c               |  5 ++++-
 drivers/infiniband/sw/rdmavt/ah.h               |  3 ++-
 drivers/infiniband/sw/rdmavt/mad.c              |  3 ++-
 drivers/infiniband/sw/rxe/rxe_verbs.c           |  3 ++-
 drivers/infiniband/ulp/ipoib/ipoib_ib.c         |  4 ++--
 drivers/infiniband/ulp/opa_vnic/opa_vnic_vema.c |  8 +++----
 drivers/infiniband/ulp/srpt/ib_srpt.c           |  4 ++--
 include/rdma/ib_verbs.h                         | 20 +++++++++++++++---
 40 files changed, 142 insertions(+), 96 deletions(-)

Comments

Jason Gunthorpe Dec. 19, 2018, 11:29 p.m. UTC | #1
On Wed, Dec 12, 2018 at 11:09:04AM +0200, Gal Pressman wrote:
> Hi Jason and Doug,
> This patchset adds a new 'flags' field to create/destroy address handle flow
> and a flag that marks whether the callback is executed in a sleepable context
> in order to allow drivers to wait for device completion instead of busy polling
> when possible.
> 
> Patches #1, #2 add the flag to create/destroy AH callbacks and change all the
> drivers, patches #3, #4 change bnxt_re driver to make use of the flag and not
> poll for firmware completion.
> 
> Note that I left the bool function parameter in the bnxt_re internal qplib
> calls because that's consistent with all other functions, changed it anywhere
> else.
> 
> Changelog:
> v1->v2:
> * Rebased on top of rdmavt callbacks fixes by Kamal and adjust the callbacks accordingly
> * Use flags and an enum instead of bool flag
> * Make bnxt_re_create_shadow_qp_ah call create AH as sleepable (changed from non-sleepable)
> * Make bnxt_re_destroy_qp call destroy AH as sleepable (changed from non-sleepable)

I rebased this and applied it to for-next

Thanks,
Jason