mbox series

[rdma-next,00/14] Refactoring FD usage

Message ID 1578504126-9400-1-git-send-email-yishaih@mellanox.com (mailing list archive)
Headers show
Series Refactoring FD usage | expand

Message

Yishai Hadas Jan. 8, 2020, 5:21 p.m. UTC
This series refactors the usage of FDs in both IB core and mlx5 driver.
It includes:
- Simplify destruction of FD uobjects by making them pure uobjects and use
   a generic release method for all struct file operations.
- Make ib_uverbs_async_event_file into a uobject.
- Improve locking in few related areas.
- Simplify type usage for ib_uverbs_async_handler().

This refactoring series may be followed by some other series that will allow
the async FD to be allocated separately from the context and then enables
having the alloc_context command over ioctl.

Yishai

Jason Gunthorpe (14):
  RDMA/mlx5: Use RCU and direct refcounts to keep memory alive
  RDMA/core: Simplify destruction of FD uobjects
  RDMA/mlx5: Simplify devx async commands
  RDMA/core: Do not allow alloc_commit to fail
  RDMA/core: Make ib_ucq_object use ib_uevent_object
  RDMA/core: Do not erase the type of ib_cq.uobject
  RDMA/core: Do not erase the type of ib_qp.uobject
  RDMA/core: Do not erase the type of ib_srq.uobject
  RDMA/core: Do not erase the type of ib_wq.uobject
  RDMA/core: Simplify type usage for ib_uverbs_async_handler()
  RDMA/core: Fix locking in ib_uverbs_event_read
  RDMA/core: Remove the ufile arg from rdma_alloc_begin_uobject
  RDMA/core: Make ib_uverbs_async_event_file into a uobject
  RDMA/core: Use READ_ONCE for ib_ufile.async_file

 drivers/infiniband/core/Makefile                   |   3 +-
 drivers/infiniband/core/core_priv.h                |   2 +-
 drivers/infiniband/core/nldev.c                    |   3 +-
 drivers/infiniband/core/rdma_core.c                | 189 ++++++-------
 drivers/infiniband/core/rdma_core.h                |  45 +---
 drivers/infiniband/core/uverbs.h                   |  28 +-
 drivers/infiniband/core/uverbs_cmd.c               | 201 +++++++-------
 drivers/infiniband/core/uverbs_ioctl.c             |  45 +---
 drivers/infiniband/core/uverbs_main.c              | 292 ++++++---------------
 drivers/infiniband/core/uverbs_std_types.c         |  44 +++-
 .../infiniband/core/uverbs_std_types_async_fd.c    |  33 +++
 drivers/infiniband/core/uverbs_std_types_cq.c      |  19 +-
 drivers/infiniband/core/uverbs_uapi.c              |   7 +-
 drivers/infiniband/hw/mlx5/devx.c                  | 159 +++++------
 include/rdma/ib_verbs.h                            |  13 +-
 include/rdma/uverbs_std_types.h                    |  13 +-
 include/rdma/uverbs_types.h                        |  33 ++-
 include/uapi/rdma/ib_user_ioctl_cmds.h             |   1 +
 18 files changed, 494 insertions(+), 636 deletions(-)
 create mode 100644 drivers/infiniband/core/uverbs_std_types_async_fd.c

Comments

Jason Gunthorpe Jan. 13, 2020, 8:37 p.m. UTC | #1
On Wed, Jan 08, 2020 at 07:21:52PM +0200, Yishai Hadas wrote:
> This series refactors the usage of FDs in both IB core and mlx5 driver.
> It includes:
> - Simplify destruction of FD uobjects by making them pure uobjects and use
>    a generic release method for all struct file operations.
> - Make ib_uverbs_async_event_file into a uobject.
> - Improve locking in few related areas.
> - Simplify type usage for ib_uverbs_async_handler().
> 
> This refactoring series may be followed by some other series that will allow
> the async FD to be allocated separately from the context and then enables
> having the alloc_context command over ioctl.
> 
> Yishai
> 
> Jason Gunthorpe (14):
>   RDMA/mlx5: Use RCU and direct refcounts to keep memory alive
>   RDMA/core: Simplify destruction of FD uobjects
>   RDMA/mlx5: Simplify devx async commands
>   RDMA/core: Do not allow alloc_commit to fail
>   RDMA/core: Make ib_ucq_object use ib_uevent_object
>   RDMA/core: Do not erase the type of ib_cq.uobject
>   RDMA/core: Do not erase the type of ib_qp.uobject
>   RDMA/core: Do not erase the type of ib_srq.uobject
>   RDMA/core: Do not erase the type of ib_wq.uobject
>   RDMA/core: Simplify type usage for ib_uverbs_async_handler()
>   RDMA/core: Fix locking in ib_uverbs_event_read
>   RDMA/core: Remove the ufile arg from rdma_alloc_begin_uobject
>   RDMA/core: Make ib_uverbs_async_event_file into a uobject
>   RDMA/core: Use READ_ONCE for ib_ufile.async_file

Applied to for-next

Jason