RDMA/core: Track device memory MRs
[ Upstream commitb47a98efa9] Device memory (DM) are registered as MR during initialization flow, these MRs were not tracked by resource tracker and had res->valid set as a false. Update the code to manage them too. Before this change: $ ibv_rc_pingpong -j & $ rdma res show mr <-- shows nothing After this change: $ ibv_rc_pingpong -j & $ rdma res show mr dev ibp0s9 mrn 0 mrlen 4096 pdn 3 pid 734 comm ibv_rc_pingpong Fixes:be934cca9e("IB/uverbs: Add device memory registration ioctl support") Link: https://lore.kernel.org/r/20201117070148.1974114-2-leon@kernel.org Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
aaaa7a6006
commit
deaeb67c9d
@@ -33,6 +33,7 @@
|
|||||||
#include "rdma_core.h"
|
#include "rdma_core.h"
|
||||||
#include "uverbs.h"
|
#include "uverbs.h"
|
||||||
#include <rdma/uverbs_std_types.h>
|
#include <rdma/uverbs_std_types.h>
|
||||||
|
#include "restrack.h"
|
||||||
|
|
||||||
static int uverbs_free_mr(struct ib_uobject *uobject,
|
static int uverbs_free_mr(struct ib_uobject *uobject,
|
||||||
enum rdma_remove_reason why,
|
enum rdma_remove_reason why,
|
||||||
@@ -134,6 +135,9 @@ static int UVERBS_HANDLER(UVERBS_METHOD_DM_MR_REG)(
|
|||||||
atomic_inc(&pd->usecnt);
|
atomic_inc(&pd->usecnt);
|
||||||
atomic_inc(&dm->usecnt);
|
atomic_inc(&dm->usecnt);
|
||||||
|
|
||||||
|
rdma_restrack_new(&mr->res, RDMA_RESTRACK_MR);
|
||||||
|
rdma_restrack_set_name(&mr->res, NULL);
|
||||||
|
rdma_restrack_add(&mr->res);
|
||||||
uobj->object = mr;
|
uobj->object = mr;
|
||||||
|
|
||||||
uverbs_finalize_uobj_create(attrs, UVERBS_ATTR_REG_DM_MR_HANDLE);
|
uverbs_finalize_uobj_create(attrs, UVERBS_ATTR_REG_DM_MR_HANDLE);
|
||||||
|
|||||||
Reference in New Issue
Block a user