On Tue, Dec 04, 2018 at 02:22:52PM +0000, Parav Pandit wrote: > Hi Leon, > > > -----Original Message----- > > From: Leon Romanovsky <leon@xxxxxxxxxx> > > Sent: Friday, November 30, 2018 5:17 AM > > To: Doug Ledford <dledford@xxxxxxxxxx>; Jason Gunthorpe > > <jgg@xxxxxxxxxxxx> > > Cc: Leon Romanovsky <leonro@xxxxxxxxxxxx>; RDMA mailing list <linux- > > rdma@xxxxxxxxxxxxxxx>; Parav Pandit <parav@xxxxxxxxxxxx> > > Subject: [PATCH rdma-next 2/2] RDMA/uverbs: Add an ioctl method to > > destroy an object > > > > From: Parav Pandit <parav@xxxxxxxxxxxx> > > > > Add an ioctl method to destroy following objects by its handle which doesn't > > require any output response during destruction. > > Objects: PD, MR, MW, AH, flow, RWQ indirection table and XRCD. > > > > Signed-off-by: Parav Pandit <parav@xxxxxxxxxxxx> > > Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx> > > --- > > drivers/infiniband/core/uverbs_std_types.c | 60 +++++++++++++++++-- > > drivers/infiniband/core/uverbs_std_types_mr.c | 10 +++- > > include/uapi/rdma/ib_user_ioctl_cmds.h | 52 ++++++++++++++++ > > 3 files changed, 115 insertions(+), 7 deletions(-) > > > > diff --git a/drivers/infiniband/core/uverbs_std_types.c > > b/drivers/infiniband/core/uverbs_std_types.c > > index 8db5d23ca087..f6e132405112 100644 > > --- a/drivers/infiniband/core/uverbs_std_types.c > > +++ b/drivers/infiniband/core/uverbs_std_types.c > > @@ -228,36 +228,84 @@ DECLARE_UVERBS_NAMED_OBJECT( > > UVERBS_OBJECT_QP, > > UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_uqp_object), > > uverbs_free_qp)); > > > > +DECLARE_UVERBS_NAMED_METHOD_DESTROY( > > + UVERBS_METHOD_MW_DESTROY, > > + UVERBS_ATTR_IDR(UVERBS_ATTR_DESTROY_MW_HANDLE, > > + UVERBS_OBJECT_MW, > > + UVERBS_ACCESS_DESTROY, > > + UA_MANDATORY)); > > + > > DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_MW, > > - UVERBS_TYPE_ALLOC_IDR(uverbs_free_mw)); > > + UVERBS_TYPE_ALLOC_IDR(uverbs_free_mw), > > + > > &UVERBS_METHOD(UVERBS_METHOD_MW_DESTROY)); > > > > DECLARE_UVERBS_NAMED_OBJECT( > > UVERBS_OBJECT_SRQ, > > UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_usrq_object), > > uverbs_free_srq)); > > > > +DECLARE_UVERBS_NAMED_METHOD_DESTROY( > > + UVERBS_METHOD_AH_DESTROY, > > + UVERBS_ATTR_IDR(UVERBS_ATTR_DESTROY_AH_HANDLE, > > + UVERBS_OBJECT_AH, > > + UVERBS_ACCESS_DESTROY, > > + UA_MANDATORY)); > > + > > DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_AH, > > - UVERBS_TYPE_ALLOC_IDR(uverbs_free_ah)); > > + UVERBS_TYPE_ALLOC_IDR(uverbs_free_ah), > > + > > &UVERBS_METHOD(UVERBS_METHOD_AH_DESTROY)); > > + > > +DECLARE_UVERBS_NAMED_METHOD_DESTROY( > > + UVERBS_METHOD_FLOW_DESTROY, > > + UVERBS_ATTR_IDR(UVERBS_ATTR_DESTROY_FLOW_HANDLE, > > + UVERBS_OBJECT_FLOW, > > + UVERBS_ACCESS_DESTROY, > > + UA_MANDATORY)); > > > > DECLARE_UVERBS_NAMED_OBJECT( > > UVERBS_OBJECT_FLOW, > > UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_uflow_object), > > - uverbs_free_flow)); > > + uverbs_free_flow), > > + > > &UVERBS_METHOD(UVERBS_METHOD_FLOW_DESTROY)); > > > > DECLARE_UVERBS_NAMED_OBJECT( > > UVERBS_OBJECT_WQ, > > UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_uwq_object), > > uverbs_free_wq)); > > > > +DECLARE_UVERBS_NAMED_METHOD_DESTROY( > > + UVERBS_METHOD_RWQ_IND_TBL_DESTROY, > > + UVERBS_ATTR_IDR(UVERBS_ATTR_DESTROY_RWQ_IND_TBL_HANDLE, > > + UVERBS_OBJECT_RWQ_IND_TBL, > > + UVERBS_ACCESS_DESTROY, > > + UA_MANDATORY)); > > + > > DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_RWQ_IND_TBL, > > - > > UVERBS_TYPE_ALLOC_IDR(uverbs_free_rwq_ind_tbl)); > > + > > UVERBS_TYPE_ALLOC_IDR(uverbs_free_rwq_ind_tbl), > > + > > &UVERBS_METHOD(UVERBS_METHOD_RWQ_IND_TBL_DESTROY)); > > + > > +DECLARE_UVERBS_NAMED_METHOD_DESTROY( > > + UVERBS_METHOD_XRCD_DESTROY, > > + UVERBS_ATTR_IDR(UVERBS_ATTR_DESTROY_XRCD_HANDLE, > > + UVERBS_OBJECT_XRCD, > > + UVERBS_ACCESS_DESTROY, > > + UA_MANDATORY)); > > > > DECLARE_UVERBS_NAMED_OBJECT( > > UVERBS_OBJECT_XRCD, > > UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_uxrcd_object), > > - uverbs_free_xrcd)); > > + uverbs_free_xrcd), > > + > > &UVERBS_METHOD(UVERBS_METHOD_XRCD_DESTROY)); > > + > > +DECLARE_UVERBS_NAMED_METHOD_DESTROY( > > + UVERBS_METHOD_PD_DESTROY, > > + UVERBS_ATTR_IDR(UVERBS_ATTR_DESTROY_PD_HANDLE, > > + UVERBS_OBJECT_PD, > > + UVERBS_ACCESS_DESTROY, > > + UA_MANDATORY)); > > > > DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_PD, > > - UVERBS_TYPE_ALLOC_IDR(uverbs_free_pd)); > > + UVERBS_TYPE_ALLOC_IDR(uverbs_free_pd), > > + > > &UVERBS_METHOD(UVERBS_METHOD_PD_DESTROY)); > > > > const struct uapi_definition uverbs_def_obj_intf[] = { > > UAPI_DEF_CHAIN_OBJ_TREE_NAMED(UVERBS_OBJECT_PD, > > diff --git a/drivers/infiniband/core/uverbs_std_types_mr.c > > b/drivers/infiniband/core/uverbs_std_types_mr.c > > index 0057ac3b507d..4c7aa87d3cb8 100644 > > --- a/drivers/infiniband/core/uverbs_std_types_mr.c > > +++ b/drivers/infiniband/core/uverbs_std_types_mr.c > > @@ -197,11 +197,19 @@ DECLARE_UVERBS_NAMED_METHOD( > > UVERBS_ATTR_TYPE(u32), > > UA_MANDATORY)); > > > > +DECLARE_UVERBS_NAMED_METHOD_DESTROY( > > + UVERBS_METHOD_MR_DESTROY, > > + UVERBS_ATTR_IDR(UVERBS_ATTR_DESTROY_MR_HANDLE, > > + UVERBS_OBJECT_MR, > > + UVERBS_ACCESS_DESTROY, > > + UA_MANDATORY)); > > + > > DECLARE_UVERBS_NAMED_OBJECT( > > UVERBS_OBJECT_MR, > > UVERBS_TYPE_ALLOC_IDR(uverbs_free_mr), > > &UVERBS_METHOD(UVERBS_METHOD_ADVISE_MR), > > - &UVERBS_METHOD(UVERBS_METHOD_DM_MR_REG)); > > + &UVERBS_METHOD(UVERBS_METHOD_DM_MR_REG), > > + &UVERBS_METHOD(UVERBS_METHOD_MR_DESTROY)); > > > > const struct uapi_definition uverbs_def_obj_mr[] = { > > UAPI_DEF_CHAIN_OBJ_TREE_NAMED(UVERBS_OBJECT_MR, > > diff --git a/include/uapi/rdma/ib_user_ioctl_cmds.h > > b/include/uapi/rdma/ib_user_ioctl_cmds.h > > index d83de187c112..5e5d962aa17d 100644 > > --- a/include/uapi/rdma/ib_user_ioctl_cmds.h > > +++ b/include/uapi/rdma/ib_user_ioctl_cmds.h > > @@ -154,6 +154,11 @@ enum uverbs_attrs_advise_mr_cmd_attr_ids { > > enum uverbs_methods_mr { > > UVERBS_METHOD_DM_MR_REG, > > UVERBS_METHOD_ADVISE_MR, > > + UVERBS_METHOD_MR_DESTROY, > > +}; > You posted my patches first. In tree Moni's patches were present before me. > So these patches needs to apply in same order or Jason need to resolve merge conflicts. Moni's patches are based on latest rdma-next and because Yishai is going to send rdma-core part very soon they will be applied before yours. Thanks >
Attachment:
signature.asc
Description: PGP signature