mbox series

[rdma/for-next,v3,0/5] IB/{hw,sw}: remove 'uobject->context' dependency APIs

Message ID 20190331161024.31035-1-shamir.rabinovitch@oracle.com (mailing list archive)
Headers show
Series IB/{hw,sw}: remove 'uobject->context' dependency APIs | expand

Message

Shamir Rabinovitch March 31, 2019, 4:10 p.m. UTC
This patch set continue the cleanup started with prior series. This
patch set clean the ib_x destroy APIs.

The final goal of this cleanup is to remove the dependency in the IB
code in the ib_x->uobject pointer as step toward shared ib_x objects.

This series also remove ib_ucontext from functions signature where
ib_udata is available. 

Changelog:

v2 -> v3:
* Fix HNS compile

v1 -> v2:
* rebase to latest rdma/for-next 
* Patch 1/5: 
  Replace the ufile with attrs->ufile
  ufd_get_read - pass attrs not NULL
* Patch 2/5:
  uverbs_close_fd now pass valid uverbs_attr_bundle
  __uverbs_cleanup_ufile loop optimize as Jason suggested
* Patch 3/5:
  Use static inline instead of macros
* Patch 5/5:
  New patch to clean-up the functions prototypes that
  had duplicate ib_ucontext & ib_udata 

Shamir Rabinovitch (5):
  IB/{rdma,core}: ucontext should be set properly for all cmd & ioctl
    paths
  IB/{core,hw}: pass uverbs_attr_bundle down uobject destroy path
  IB/{core,hw,sw}: pass uverbs_attr_bundle down ib_x destroy path
  IB:{core,hw}: remove 'uobject->context' dependency in object destroy
    APIs
  IB/{core,hw,sw}: pass only ib_udata in function prototypes

 drivers/infiniband/core/cq.c                  |  21 +-
 drivers/infiniband/core/rdma_core.c           | 117 ++++-----
 drivers/infiniband/core/rdma_core.h           |   9 +-
 drivers/infiniband/core/uverbs.h              |   3 +-
 drivers/infiniband/core/uverbs_cmd.c          |  79 +++---
 drivers/infiniband/core/uverbs_ioctl.c        |  25 +-
 drivers/infiniband/core/uverbs_std_types.c    |  52 ++--
 .../core/uverbs_std_types_counters.c          |   3 +-
 drivers/infiniband/core/uverbs_std_types_cq.c |  10 +-
 drivers/infiniband/core/uverbs_std_types_dm.c |   5 +-
 .../core/uverbs_std_types_flow_action.c       |   3 +-
 drivers/infiniband/core/uverbs_std_types_mr.c |   8 +-
 drivers/infiniband/core/verbs.c               |  84 +++---
 drivers/infiniband/hw/bnxt_re/ib_verbs.c      |  40 +--
 drivers/infiniband/hw/bnxt_re/ib_verbs.h      |  18 +-
 drivers/infiniband/hw/cxgb3/iwch_provider.c   |  48 ++--
 drivers/infiniband/hw/cxgb4/cq.c              |  20 +-
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h        |  12 +-
 drivers/infiniband/hw/cxgb4/mem.c             |   5 +-
 drivers/infiniband/hw/cxgb4/provider.c        |   9 +-
 drivers/infiniband/hw/cxgb4/qp.c              |   8 +-
 drivers/infiniband/hw/hns/hns_roce_ah.c       |   2 +-
 drivers/infiniband/hw/hns/hns_roce_cq.c       |  36 ++-
 drivers/infiniband/hw/hns/hns_roce_device.h   |  23 +-
 drivers/infiniband/hw/hns/hns_roce_hw_v1.c    |  23 +-
 drivers/infiniband/hw/hns/hns_roce_hw_v1.h    |   2 +-
 drivers/infiniband/hw/hns/hns_roce_hw_v2.c    |  25 +-
 drivers/infiniband/hw/hns/hns_roce_mr.c       |   6 +-
 drivers/infiniband/hw/hns/hns_roce_pd.c       |   7 +-
 drivers/infiniband/hw/hns/hns_roce_srq.c      |   2 +-
 drivers/infiniband/hw/i40iw/i40iw_cm.c        |   3 +-
 drivers/infiniband/hw/i40iw/i40iw_verbs.c     |  49 ++--
 drivers/infiniband/hw/mlx4/ah.c               |   2 +-
 drivers/infiniband/hw/mlx4/cq.c               |  39 +--
 drivers/infiniband/hw/mlx4/doorbell.c         |   9 +-
 drivers/infiniband/hw/mlx4/mad.c              |  10 +-
 drivers/infiniband/hw/mlx4/main.c             |  10 +-
 drivers/infiniband/hw/mlx4/mlx4_ib.h          |  19 +-
 drivers/infiniband/hw/mlx4/mr.c               |   5 +-
 drivers/infiniband/hw/mlx4/qp.c               |  38 +--
 drivers/infiniband/hw/mlx4/srq.c              |  14 +-
 drivers/infiniband/hw/mlx5/ah.c               |   2 +-
 drivers/infiniband/hw/mlx5/cq.c               |  51 ++--
 drivers/infiniband/hw/mlx5/devx.c             |   6 +-
 drivers/infiniband/hw/mlx5/flow.c             |   3 +-
 drivers/infiniband/hw/mlx5/main.c             |  55 ++--
 drivers/infiniband/hw/mlx5/mlx5_ib.h          |  23 +-
 drivers/infiniband/hw/mlx5/mr.c               |   5 +-
 drivers/infiniband/hw/mlx5/qp.c               |  41 +--
 drivers/infiniband/hw/mlx5/srq.c              |  21 +-
 drivers/infiniband/hw/mthca/mthca_provider.c  | 102 ++++----
 drivers/infiniband/hw/nes/nes_cm.c            |   3 +-
 drivers/infiniband/hw/nes/nes_verbs.c         |  68 +++--
 drivers/infiniband/hw/ocrdma/ocrdma_ah.c      |   2 +-
 drivers/infiniband/hw/ocrdma/ocrdma_ah.h      |   2 +-
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c   |  75 ++++--
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.h   |  17 +-
 drivers/infiniband/hw/qedr/verbs.c            |  49 ++--
 drivers/infiniband/hw/qedr/verbs.h            |  18 +-
 drivers/infiniband/hw/usnic/usnic_ib_verbs.c  |  20 +-
 drivers/infiniband/hw/usnic/usnic_ib_verbs.h  |  12 +-
 drivers/infiniband/hw/vmw_pvrdma/pvrdma_cq.c  |  20 +-
 drivers/infiniband/hw/vmw_pvrdma/pvrdma_mr.c  |   4 +-
 drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c  |   3 +-
 drivers/infiniband/hw/vmw_pvrdma/pvrdma_srq.c |   5 +-
 .../infiniband/hw/vmw_pvrdma/pvrdma_verbs.c   |  23 +-
 .../infiniband/hw/vmw_pvrdma/pvrdma_verbs.h   |  18 +-
 drivers/infiniband/sw/rdmavt/ah.c             |   4 +-
 drivers/infiniband/sw/rdmavt/ah.h             |   3 +-
 drivers/infiniband/sw/rdmavt/cq.c             |   7 +-
 drivers/infiniband/sw/rdmavt/cq.h             |   3 +-
 drivers/infiniband/sw/rdmavt/mmap.c           |  14 +-
 drivers/infiniband/sw/rdmavt/mmap.h           |   2 +-
 drivers/infiniband/sw/rdmavt/mr.c             |   5 +-
 drivers/infiniband/sw/rdmavt/mr.h             |   5 +-
 drivers/infiniband/sw/rdmavt/pd.c             |   7 +-
 drivers/infiniband/sw/rdmavt/pd.h             |   5 +-
 drivers/infiniband/sw/rdmavt/qp.c             |   7 +-
 drivers/infiniband/sw/rdmavt/qp.h             |   2 +-
 drivers/infiniband/sw/rdmavt/srq.c            |   7 +-
 drivers/infiniband/sw/rdmavt/srq.h            |   2 +-
 drivers/infiniband/sw/rxe/rxe_cq.c            |  10 +-
 drivers/infiniband/sw/rxe/rxe_loc.h           |  12 +-
 drivers/infiniband/sw/rxe/rxe_mmap.c          |  12 +-
 drivers/infiniband/sw/rxe/rxe_qp.c            |  14 +-
 drivers/infiniband/sw/rxe/rxe_queue.c         |   8 +-
 drivers/infiniband/sw/rxe/rxe_queue.h         |   4 +-
 drivers/infiniband/sw/rxe/rxe_srq.c           |  12 +-
 drivers/infiniband/sw/rxe/rxe_verbs.c         |  29 +--
 include/rdma/ib_verbs.h                       | 242 +++++++++++++++---
 include/rdma/uverbs_std_types.h               |  39 ++-
 include/rdma/uverbs_types.h                   |  18 +-
 92 files changed, 1191 insertions(+), 833 deletions(-)

Comments

Jason Gunthorpe April 1, 2019, 7:32 p.m. UTC | #1
On Sun, Mar 31, 2019 at 07:10:02PM +0300, Shamir Rabinovitch wrote:
> This patch set continue the cleanup started with prior series. This
> patch set clean the ib_x destroy APIs.
> 
> The final goal of this cleanup is to remove the dependency in the IB
> code in the ib_x->uobject pointer as step toward shared ib_x objects.
> 
> This series also remove ib_ucontext from functions signature where
> ib_udata is available. 
> 
> Changelog:
> 
> v2 -> v3:
> * Fix HNS compile
> 
> v1 -> v2:
> * rebase to latest rdma/for-next 
> * Patch 1/5: 
>   Replace the ufile with attrs->ufile
>   ufd_get_read - pass attrs not NULL
> * Patch 2/5:
>   uverbs_close_fd now pass valid uverbs_attr_bundle
>   __uverbs_cleanup_ufile loop optimize as Jason suggested
> * Patch 3/5:
>   Use static inline instead of macros
> * Patch 5/5:
>   New patch to clean-up the functions prototypes that
>   had duplicate ib_ucontext & ib_udata 
> 
> Shamir Rabinovitch (5):
>   IB/{rdma,core}: ucontext should be set properly for all cmd & ioctl
>     paths
>   IB/{core,hw}: pass uverbs_attr_bundle down uobject destroy path
>   IB/{core,hw,sw}: pass uverbs_attr_bundle down ib_x destroy path
>   IB:{core,hw}: remove 'uobject->context' dependency in object destroy
>     APIs
>   IB/{core,hw,sw}: pass only ib_udata in function prototypes

I fixed the things I noted, did some clang-format and applied it to
for-next, thanks

Please send a folowup patch fixing the attr.context not being set
during get_context

Jason
Shamir Rabinovitch April 11, 2019, 2:22 p.m. UTC | #2
On Mon, Apr 01, 2019 at 04:32:18PM -0300, Jason Gunthorpe wrote:
> On Sun, Mar 31, 2019 at 07:10:02PM +0300, Shamir Rabinovitch wrote:
> > This patch set continue the cleanup started with prior series. This
> > patch set clean the ib_x destroy APIs.
> > 
> > The final goal of this cleanup is to remove the dependency in the IB
> > code in the ib_x->uobject pointer as step toward shared ib_x objects.
> > 
> > This series also remove ib_ucontext from functions signature where
> > ib_udata is available. 
> > 
> > Changelog:
> > 
> > v2 -> v3:
> > * Fix HNS compile
> > 
> > v1 -> v2:
> > * rebase to latest rdma/for-next 
> > * Patch 1/5: 
> >   Replace the ufile with attrs->ufile
> >   ufd_get_read - pass attrs not NULL
> > * Patch 2/5:
> >   uverbs_close_fd now pass valid uverbs_attr_bundle
> >   __uverbs_cleanup_ufile loop optimize as Jason suggested
> > * Patch 3/5:
> >   Use static inline instead of macros
> > * Patch 5/5:
> >   New patch to clean-up the functions prototypes that
> >   had duplicate ib_ucontext & ib_udata 
> > 
> > Shamir Rabinovitch (5):
> >   IB/{rdma,core}: ucontext should be set properly for all cmd & ioctl
> >     paths
> >   IB/{core,hw}: pass uverbs_attr_bundle down uobject destroy path
> >   IB/{core,hw,sw}: pass uverbs_attr_bundle down ib_x destroy path
> >   IB:{core,hw}: remove 'uobject->context' dependency in object destroy
> >     APIs
> >   IB/{core,hw,sw}: pass only ib_udata in function prototypes
> 
> I fixed the things I noted, did some clang-format and applied it to
> for-next, thanks
> 
> Please send a folowup patch fixing the attr.context not being set
> during get_context
> 
> Jason

Thanks Jason!

Will send the follow up patch.