From patchwork Sun Jan 20 13:06:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Leon Romanovsky X-Patchwork-Id: 10772395 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2285C6C2 for ; Sun, 20 Jan 2019 13:06:23 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 122882A6F1 for ; Sun, 20 Jan 2019 13:06:23 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 066DD2AA7D; Sun, 20 Jan 2019 13:06:23 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 94B802A6F1 for ; Sun, 20 Jan 2019 13:06:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730589AbfATNGW (ORCPT ); Sun, 20 Jan 2019 08:06:22 -0500 Received: from mail.kernel.org ([198.145.29.99]:36428 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730542AbfATNGW (ORCPT ); Sun, 20 Jan 2019 08:06:22 -0500 Received: from localhost (unknown [193.47.165.251]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id CF9972087B; Sun, 20 Jan 2019 13:06:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1547989581; bh=rxEER+umiDIqDfkMXb4Xh1Ho1MvsR8pBRdHJr8d9VVo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FrhdaRz7HesxJpDcFjiDqo8Tus0UUBW5lenmPoeJlar3nBGE2rfwowZ+1sMt6pLwD PesKhYHG3S3+XachUazSIghIpJ6quLkQbKaGl/XZwKzB1kHDDkxj3jUA+lI1vi+xRJ Sn++5ccXLZyjHojFSK3H6BQ9jQ6Ko1G49CKdyFLA= From: Leon Romanovsky To: Doug Ledford , Jason Gunthorpe Cc: Leon Romanovsky , RDMA mailing list Subject: [PATCH rdma-next v1 6/6] RDMA/mlx5: Annotate MR allocation Date: Sun, 20 Jan 2019 15:06:00 +0200 Message-Id: <20190120130600.8788-7-leon@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190120130600.8788-1-leon@kernel.org> References: <20190120130600.8788-1-leon@kernel.org> MIME-Version: 1.0 Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Leon Romanovsky Use restrack ID ability to track MRs. Signed-off-by: Leon Romanovsky --- drivers/infiniband/core/verbs.c | 2 ++ drivers/infiniband/hw/mlx5/mr.c | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c index 0a85bb2c3408..fb4b0ac85c09 100644 --- a/drivers/infiniband/core/verbs.c +++ b/drivers/infiniband/core/verbs.c @@ -287,6 +287,8 @@ struct ib_pd *__ib_alloc_pd(struct ib_device *device, unsigned int flags, ib_dealloc_pd(pd); return ERR_CAST(mr); } + rdma_restrack_set_task(&mr->res, caller); + rdma_restrack_kadd(&mr->res); mr->device = pd->device; mr->pd = pd; diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c index 8f557f90ad7f..4d374846eaf6 100644 --- a/drivers/infiniband/hw/mlx5/mr.c +++ b/drivers/infiniband/hw/mlx5/mr.c @@ -198,6 +198,7 @@ static int add_keys(struct mlx5_ib_dev *dev, int c, int num) mr->order = ent->order; mr->allocated_from_cache = 1; mr->dev = dev; + mr->ibmr.device = &dev->ib_dev; MLX5_SET(mkc, mkc, free, 1); MLX5_SET(mkc, mkc, umr_en, 1); @@ -812,10 +813,15 @@ struct ib_mr *mlx5_ib_get_dma_mr(struct ib_pd *pd, int acc) mr->mmkey.type = MLX5_MKEY_MR; mr->ibmr.lkey = mr->mmkey.key; mr->ibmr.rkey = mr->mmkey.key; - mr->umem = NULL; + mr->ibmr.device = pd->device; + rdma_rt_set_type(&mr->ibmr.res, RDMA_RESTRACK_MR); + err = rdma_restrack_add(&mr->ibmr.res); + if (err) + goto err_rt; return &mr->ibmr; +err_rt: mlx5_core_destroy_mkey(mdev, &mr->mmkey); err_in: kfree(in); @@ -1673,6 +1679,7 @@ static void dereg_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr) int mlx5_ib_dereg_mr(struct ib_mr *ibmr) { + rdma_restrack_del(&ibmr->res); dereg_mr(to_mdev(ibmr->device), to_mmr(ibmr)); return 0; } @@ -1693,6 +1700,13 @@ struct ib_mr *mlx5_ib_alloc_mr(struct ib_pd *pd, if (!mr) return ERR_PTR(-ENOMEM); + mr->ibmr.device = pd->device; + rdma_rt_set_type(&mr->ibmr.res, RDMA_RESTRACK_MR); + err = rdma_restrack_add(&mr->ibmr.res); + if (err) + goto err_rt; + + in = kzalloc(inlen, GFP_KERNEL); if (!in) { err = -ENOMEM; @@ -1789,6 +1803,8 @@ struct ib_mr *mlx5_ib_alloc_mr(struct ib_pd *pd, err_free_in: kfree(in); err_free: + rdma_restrack_del(&mr->ibmr.res); +err_rt: kfree(mr); return ERR_PTR(err); }