linux-rdma.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH for-next 0/3] RDMA/hns: Use ida to manage some index of resources and remove unused bitmap
@ 2021-08-19  1:36 Wenpeng Liang
  2021-08-19  1:36 ` [PATCH for-next 1/3] RDMA/hns: Use IDA interface to manage uar index Wenpeng Liang
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Wenpeng Liang @ 2021-08-19  1:36 UTC (permalink / raw)
  To: dledford, jgg; +Cc: linux-rdma, linuxarm, liangwenpeng

Use the ida interface to replace hns' own bitmap interface. The previous
ida patchset has replaced qp, cq, mr, pd, and xrcd. This ida patchset
will replace the remaining uar and srq. Since then, all replacements
have been completed.

Link to the previous ida patchset:
https://patchwork.kernel.org/project/linux-rdma/cover/1623325814-55737-1-git-send-email-liweihang@huawei.com/

Yangyang Li (3):
  RDMA/hns: Use IDA interface to manage uar index
  RDMA/hns: Use IDA interface to manage srq index
  RDMA/hns: Delete unused hns bitmap interface

 drivers/infiniband/hw/hns/hns_roce_alloc.c  | 74 +----------------------------
 drivers/infiniband/hw/hns/hns_roce_device.h | 16 ++-----
 drivers/infiniband/hw/hns/hns_roce_main.c   | 31 +++---------
 drivers/infiniband/hw/hns/hns_roce_pd.c     | 31 ++++++------
 drivers/infiniband/hw/hns/hns_roce_srq.c    | 28 +++++------
 5 files changed, 40 insertions(+), 140 deletions(-)

--
2.8.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH for-next 1/3] RDMA/hns: Use IDA interface to manage uar index
  2021-08-19  1:36 [PATCH for-next 0/3] RDMA/hns: Use ida to manage some index of resources and remove unused bitmap Wenpeng Liang
@ 2021-08-19  1:36 ` Wenpeng Liang
  2021-08-19  1:36 ` [PATCH for-next 2/3] RDMA/hns: Use IDA interface to manage srq index Wenpeng Liang
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Wenpeng Liang @ 2021-08-19  1:36 UTC (permalink / raw)
  To: dledford, jgg; +Cc: linux-rdma, linuxarm, liangwenpeng

From: Yangyang Li <liyangyang20@huawei.com>

Switch uar index allocation and release from hns' own bitmap interface to
IDA interface.

Signed-off-by: Yangyang Li <liyangyang20@huawei.com>
Signed-off-by: Wenpeng Liang <liangwenpeng@huawei.com>
---
 drivers/infiniband/hw/hns/hns_roce_alloc.c  |  2 +-
 drivers/infiniband/hw/hns/hns_roce_device.h |  6 ++----
 drivers/infiniband/hw/hns/hns_roce_main.c   | 14 +++++--------
 drivers/infiniband/hw/hns/hns_roce_pd.c     | 31 +++++++++++++----------------
 4 files changed, 22 insertions(+), 31 deletions(-)

diff --git a/drivers/infiniband/hw/hns/hns_roce_alloc.c b/drivers/infiniband/hw/hns/hns_roce_alloc.c
index 1b02d3b..6ae506e 100644
--- a/drivers/infiniband/hw/hns/hns_roce_alloc.c
+++ b/drivers/infiniband/hw/hns/hns_roce_alloc.c
@@ -253,5 +253,5 @@ void hns_roce_cleanup_bitmap(struct hns_roce_dev *hr_dev)
 	hns_roce_cleanup_cq_table(hr_dev);
 	ida_destroy(&hr_dev->mr_table.mtpt_ida.ida);
 	ida_destroy(&hr_dev->pd_ida.ida);
-	hns_roce_cleanup_uar_table(hr_dev);
+	ida_destroy(&hr_dev->uar_ida.ida);
 }
diff --git a/drivers/infiniband/hw/hns/hns_roce_device.h b/drivers/infiniband/hw/hns/hns_roce_device.h
index 0c3eb11..01906f3 100644
--- a/drivers/infiniband/hw/hns/hns_roce_device.h
+++ b/drivers/infiniband/hw/hns/hns_roce_device.h
@@ -963,7 +963,7 @@ struct hns_roce_dev {
 	struct hns_roce_cmdq	cmd;
 	struct hns_roce_ida pd_ida;
 	struct hns_roce_ida xrcd_ida;
-	struct hns_roce_uar_table uar_table;
+	struct hns_roce_ida uar_ida;
 	struct hns_roce_mr_table  mr_table;
 	struct hns_roce_cq_table  cq_table;
 	struct hns_roce_srq_table srq_table;
@@ -1118,10 +1118,8 @@ static inline u8 get_tclass(const struct ib_global_route *grh)
 	       grh->traffic_class >> DSCP_SHIFT : grh->traffic_class;
 }
 
-int hns_roce_init_uar_table(struct hns_roce_dev *dev);
+void hns_roce_init_uar_table(struct hns_roce_dev *dev);
 int hns_roce_uar_alloc(struct hns_roce_dev *dev, struct hns_roce_uar *uar);
-void hns_roce_uar_free(struct hns_roce_dev *dev, struct hns_roce_uar *uar);
-void hns_roce_cleanup_uar_table(struct hns_roce_dev *dev);
 
 int hns_roce_cmd_init(struct hns_roce_dev *hr_dev);
 void hns_roce_cmd_cleanup(struct hns_roce_dev *hr_dev);
diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
index 23b88a5..7ab685a 100644
--- a/drivers/infiniband/hw/hns/hns_roce_main.c
+++ b/drivers/infiniband/hw/hns/hns_roce_main.c
@@ -325,7 +325,7 @@ static int hns_roce_alloc_ucontext(struct ib_ucontext *uctx,
 	return 0;
 
 error_fail_copy_to_udata:
-	hns_roce_uar_free(hr_dev, &context->uar);
+	ida_free(&hr_dev->uar_ida.ida, (int)context->uar.logic_idx);
 
 error_fail_uar_alloc:
 	return ret;
@@ -334,8 +334,9 @@ static int hns_roce_alloc_ucontext(struct ib_ucontext *uctx,
 static void hns_roce_dealloc_ucontext(struct ib_ucontext *ibcontext)
 {
 	struct hns_roce_ucontext *context = to_hr_ucontext(ibcontext);
+	struct hns_roce_dev *hr_dev = to_hr_dev(ibcontext->device);
 
-	hns_roce_uar_free(to_hr_dev(ibcontext->device), &context->uar);
+	ida_free(&hr_dev->uar_ida.ida, (int)context->uar.logic_idx);
 }
 
 static int hns_roce_mmap(struct ib_ucontext *context,
@@ -737,11 +738,7 @@ static int hns_roce_setup_hca(struct hns_roce_dev *hr_dev)
 		mutex_init(&hr_dev->pgdir_mutex);
 	}
 
-	ret = hns_roce_init_uar_table(hr_dev);
-	if (ret) {
-		dev_err(dev, "Failed to initialize uar table. aborting\n");
-		return ret;
-	}
+	hns_roce_init_uar_table(hr_dev);
 
 	ret = hns_roce_uar_alloc(hr_dev, &hr_dev->priv_uar);
 	if (ret) {
@@ -780,10 +777,9 @@ static int hns_roce_setup_hca(struct hns_roce_dev *hr_dev)
 		ida_destroy(&hr_dev->xrcd_ida.ida);
 
 	ida_destroy(&hr_dev->pd_ida.ida);
-	hns_roce_uar_free(hr_dev, &hr_dev->priv_uar);
 
 err_uar_table_free:
-	hns_roce_cleanup_uar_table(hr_dev);
+	ida_destroy(&hr_dev->uar_ida.ida);
 	return ret;
 }
 
diff --git a/drivers/infiniband/hw/hns/hns_roce_pd.c b/drivers/infiniband/hw/hns/hns_roce_pd.c
index ea56636..81ffad7 100644
--- a/drivers/infiniband/hw/hns/hns_roce_pd.c
+++ b/drivers/infiniband/hw/hns/hns_roce_pd.c
@@ -85,13 +85,18 @@ int hns_roce_dealloc_pd(struct ib_pd *pd, struct ib_udata *udata)
 
 int hns_roce_uar_alloc(struct hns_roce_dev *hr_dev, struct hns_roce_uar *uar)
 {
+	struct hns_roce_ida *uar_ida = &hr_dev->uar_ida;
 	struct resource *res;
-	int ret;
+	int id;
 
 	/* Using bitmap to manager UAR index */
-	ret = hns_roce_bitmap_alloc(&hr_dev->uar_table.bitmap, &uar->logic_idx);
-	if (ret)
+	id = ida_alloc_range(&uar_ida->ida, uar_ida->min, uar_ida->max,
+			     GFP_KERNEL);
+	if (id < 0) {
+		ibdev_err(&hr_dev->ib_dev, "failed to alloc uar id(%d).\n", id);
 		return -ENOMEM;
+	}
+	uar->logic_idx = (unsigned long)id;
 
 	if (uar->logic_idx > 0 && hr_dev->caps.phy_num_uars > 1)
 		uar->index = (uar->logic_idx - 1) %
@@ -102,6 +107,7 @@ int hns_roce_uar_alloc(struct hns_roce_dev *hr_dev, struct hns_roce_uar *uar)
 	if (!dev_is_pci(hr_dev->dev)) {
 		res = platform_get_resource(hr_dev->pdev, IORESOURCE_MEM, 0);
 		if (!res) {
+			ida_free(&uar_ida->ida, id);
 			dev_err(&hr_dev->pdev->dev, "memory resource not found!\n");
 			return -EINVAL;
 		}
@@ -114,22 +120,13 @@ int hns_roce_uar_alloc(struct hns_roce_dev *hr_dev, struct hns_roce_uar *uar)
 	return 0;
 }
 
-void hns_roce_uar_free(struct hns_roce_dev *hr_dev, struct hns_roce_uar *uar)
+void hns_roce_init_uar_table(struct hns_roce_dev *hr_dev)
 {
-	hns_roce_bitmap_free(&hr_dev->uar_table.bitmap, uar->logic_idx);
-}
+	struct hns_roce_ida *uar_ida = &hr_dev->uar_ida;
 
-int hns_roce_init_uar_table(struct hns_roce_dev *hr_dev)
-{
-	return hns_roce_bitmap_init(&hr_dev->uar_table.bitmap,
-				    hr_dev->caps.num_uars,
-				    hr_dev->caps.num_uars - 1,
-				    hr_dev->caps.reserved_uars, 0);
-}
-
-void hns_roce_cleanup_uar_table(struct hns_roce_dev *hr_dev)
-{
-	hns_roce_bitmap_cleanup(&hr_dev->uar_table.bitmap);
+	ida_init(&uar_ida->ida);
+	uar_ida->max = hr_dev->caps.num_uars - 1;
+	uar_ida->min = hr_dev->caps.reserved_uars;
 }
 
 static int hns_roce_xrcd_alloc(struct hns_roce_dev *hr_dev, u32 *xrcdn)
-- 
2.8.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH for-next 2/3] RDMA/hns: Use IDA interface to manage srq index
  2021-08-19  1:36 [PATCH for-next 0/3] RDMA/hns: Use ida to manage some index of resources and remove unused bitmap Wenpeng Liang
  2021-08-19  1:36 ` [PATCH for-next 1/3] RDMA/hns: Use IDA interface to manage uar index Wenpeng Liang
@ 2021-08-19  1:36 ` Wenpeng Liang
  2021-08-19  1:36 ` [PATCH for-next 3/3] RDMA/hns: Delete unused hns bitmap interface Wenpeng Liang
  2021-08-20 18:48 ` [PATCH for-next 0/3] RDMA/hns: Use ida to manage some index of resources and remove unused bitmap Jason Gunthorpe
  3 siblings, 0 replies; 8+ messages in thread
From: Wenpeng Liang @ 2021-08-19  1:36 UTC (permalink / raw)
  To: dledford, jgg; +Cc: linux-rdma, linuxarm, liangwenpeng

From: Yangyang Li <liyangyang20@huawei.com>

Switch srq index allocation and release from hns' own bitmap interface to
IDA interface.

Signed-off-by: Yangyang Li <liyangyang20@huawei.com>
Signed-off-by: Wenpeng Liang <liangwenpeng@huawei.com>
---
 drivers/infiniband/hw/hns/hns_roce_alloc.c  |  2 +-
 drivers/infiniband/hw/hns/hns_roce_device.h |  5 ++---
 drivers/infiniband/hw/hns/hns_roce_main.c   | 17 +----------------
 drivers/infiniband/hw/hns/hns_roce_srq.c    | 28 ++++++++++++++--------------
 4 files changed, 18 insertions(+), 34 deletions(-)

diff --git a/drivers/infiniband/hw/hns/hns_roce_alloc.c b/drivers/infiniband/hw/hns/hns_roce_alloc.c
index 6ae506e..1dc35dd 100644
--- a/drivers/infiniband/hw/hns/hns_roce_alloc.c
+++ b/drivers/infiniband/hw/hns/hns_roce_alloc.c
@@ -248,7 +248,7 @@ void hns_roce_cleanup_bitmap(struct hns_roce_dev *hr_dev)
 		ida_destroy(&hr_dev->xrcd_ida.ida);
 
 	if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_SRQ)
-		hns_roce_cleanup_srq_table(hr_dev);
+		ida_destroy(&hr_dev->srq_table.srq_ida.ida);
 	hns_roce_cleanup_qp_table(hr_dev);
 	hns_roce_cleanup_cq_table(hr_dev);
 	ida_destroy(&hr_dev->mr_table.mtpt_ida.ida);
diff --git a/drivers/infiniband/hw/hns/hns_roce_device.h b/drivers/infiniband/hw/hns/hns_roce_device.h
index 01906f3..4b6c3c0 100644
--- a/drivers/infiniband/hw/hns/hns_roce_device.h
+++ b/drivers/infiniband/hw/hns/hns_roce_device.h
@@ -514,7 +514,7 @@ struct hns_roce_cq_table {
 };
 
 struct hns_roce_srq_table {
-	struct hns_roce_bitmap		bitmap;
+	struct hns_roce_ida		srq_ida;
 	struct xarray			xa;
 	struct hns_roce_hem_table	table;
 };
@@ -1145,13 +1145,12 @@ void hns_roce_init_pd_table(struct hns_roce_dev *hr_dev);
 void hns_roce_init_mr_table(struct hns_roce_dev *hr_dev);
 void hns_roce_init_cq_table(struct hns_roce_dev *hr_dev);
 void hns_roce_init_qp_table(struct hns_roce_dev *hr_dev);
-int hns_roce_init_srq_table(struct hns_roce_dev *hr_dev);
+void hns_roce_init_srq_table(struct hns_roce_dev *hr_dev);
 void hns_roce_init_xrcd_table(struct hns_roce_dev *hr_dev);
 
 void hns_roce_cleanup_eq_table(struct hns_roce_dev *hr_dev);
 void hns_roce_cleanup_cq_table(struct hns_roce_dev *hr_dev);
 void hns_roce_cleanup_qp_table(struct hns_roce_dev *hr_dev);
-void hns_roce_cleanup_srq_table(struct hns_roce_dev *hr_dev);
 
 int hns_roce_bitmap_alloc(struct hns_roce_bitmap *bitmap, unsigned long *obj);
 void hns_roce_bitmap_free(struct hns_roce_bitmap *bitmap, unsigned long obj);
diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
index 7ab685a..6467f8f 100644
--- a/drivers/infiniband/hw/hns/hns_roce_main.c
+++ b/drivers/infiniband/hw/hns/hns_roce_main.c
@@ -758,26 +758,11 @@ static int hns_roce_setup_hca(struct hns_roce_dev *hr_dev)
 	hns_roce_init_qp_table(hr_dev);
 
 	if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_SRQ) {
-		ret = hns_roce_init_srq_table(hr_dev);
-		if (ret) {
-			dev_err(dev,
-				"Failed to init share receive queue table.\n");
-			goto err_qp_table_free;
-		}
+		hns_roce_init_srq_table(hr_dev);
 	}
 
 	return 0;
 
-err_qp_table_free:
-	hns_roce_cleanup_qp_table(hr_dev);
-	hns_roce_cleanup_cq_table(hr_dev);
-	ida_destroy(&hr_dev->mr_table.mtpt_ida.ida);
-
-	if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_XRC)
-		ida_destroy(&hr_dev->xrcd_ida.ida);
-
-	ida_destroy(&hr_dev->pd_ida.ida);
-
 err_uar_table_free:
 	ida_destroy(&hr_dev->uar_ida.ida);
 	return ret;
diff --git a/drivers/infiniband/hw/hns/hns_roce_srq.c b/drivers/infiniband/hw/hns/hns_roce_srq.c
index 6f2992f..6eee9de 100644
--- a/drivers/infiniband/hw/hns/hns_roce_srq.c
+++ b/drivers/infiniband/hw/hns/hns_roce_srq.c
@@ -80,15 +80,19 @@ static int hns_roce_hw_destroy_srq(struct hns_roce_dev *dev,
 static int alloc_srqc(struct hns_roce_dev *hr_dev, struct hns_roce_srq *srq)
 {
 	struct hns_roce_srq_table *srq_table = &hr_dev->srq_table;
+	struct hns_roce_ida *srq_ida = &hr_dev->srq_table.srq_ida;
 	struct ib_device *ibdev = &hr_dev->ib_dev;
 	struct hns_roce_cmd_mailbox *mailbox;
 	int ret;
+	int id;
 
-	ret = hns_roce_bitmap_alloc(&srq_table->bitmap, &srq->srqn);
-	if (ret) {
-		ibdev_err(ibdev, "failed to alloc SRQ number.\n");
+	id = ida_alloc_range(&srq_ida->ida, srq_ida->min, srq_ida->max,
+			     GFP_KERNEL);
+	if (id < 0) {
+		ibdev_err(ibdev, "failed to alloc srq(%d).\n", id);
 		return -ENOMEM;
 	}
+	srq->srqn = (unsigned long)id;
 
 	ret = hns_roce_table_get(hr_dev, &srq_table->table, srq->srqn);
 	if (ret) {
@@ -132,7 +136,7 @@ static int alloc_srqc(struct hns_roce_dev *hr_dev, struct hns_roce_srq *srq)
 err_put:
 	hns_roce_table_put(hr_dev, &srq_table->table, srq->srqn);
 err_out:
-	hns_roce_bitmap_free(&srq_table->bitmap, srq->srqn);
+	ida_free(&srq_ida->ida, id);
 
 	return ret;
 }
@@ -154,7 +158,7 @@ static void free_srqc(struct hns_roce_dev *hr_dev, struct hns_roce_srq *srq)
 	wait_for_completion(&srq->free);
 
 	hns_roce_table_put(hr_dev, &srq_table->table, srq->srqn);
-	hns_roce_bitmap_free(&srq_table->bitmap, srq->srqn);
+	ida_free(&srq_table->srq_ida.ida, (int)srq->srqn);
 }
 
 static int alloc_srq_idx(struct hns_roce_dev *hr_dev, struct hns_roce_srq *srq,
@@ -440,18 +444,14 @@ int hns_roce_destroy_srq(struct ib_srq *ibsrq, struct ib_udata *udata)
 	return 0;
 }
 
-int hns_roce_init_srq_table(struct hns_roce_dev *hr_dev)
+void hns_roce_init_srq_table(struct hns_roce_dev *hr_dev)
 {
 	struct hns_roce_srq_table *srq_table = &hr_dev->srq_table;
+	struct hns_roce_ida *srq_ida = &srq_table->srq_ida;
 
 	xa_init(&srq_table->xa);
 
-	return hns_roce_bitmap_init(&srq_table->bitmap, hr_dev->caps.num_srqs,
-				    hr_dev->caps.num_srqs - 1,
-				    hr_dev->caps.reserved_srqs, 0);
-}
-
-void hns_roce_cleanup_srq_table(struct hns_roce_dev *hr_dev)
-{
-	hns_roce_bitmap_cleanup(&hr_dev->srq_table.bitmap);
+	ida_init(&srq_ida->ida);
+	srq_ida->max = hr_dev->caps.num_srqs - 1;
+	srq_ida->min = hr_dev->caps.reserved_srqs;
 }
-- 
2.8.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH for-next 3/3] RDMA/hns: Delete unused hns bitmap interface
  2021-08-19  1:36 [PATCH for-next 0/3] RDMA/hns: Use ida to manage some index of resources and remove unused bitmap Wenpeng Liang
  2021-08-19  1:36 ` [PATCH for-next 1/3] RDMA/hns: Use IDA interface to manage uar index Wenpeng Liang
  2021-08-19  1:36 ` [PATCH for-next 2/3] RDMA/hns: Use IDA interface to manage srq index Wenpeng Liang
@ 2021-08-19  1:36 ` Wenpeng Liang
  2021-08-20 18:48 ` [PATCH for-next 0/3] RDMA/hns: Use ida to manage some index of resources and remove unused bitmap Jason Gunthorpe
  3 siblings, 0 replies; 8+ messages in thread
From: Wenpeng Liang @ 2021-08-19  1:36 UTC (permalink / raw)
  To: dledford, jgg; +Cc: linux-rdma, linuxarm, liangwenpeng

From: Yangyang Li <liyangyang20@huawei.com>

The resources that use the hns bitmap interface:
qp, cq, mr, pd, xrcd, uar, srq, have been changed to IDA interfaces, and
the unused hns' own bitmap interfaces need to be deleted.

Signed-off-by: Yangyang Li <liyangyang20@huawei.com>
Signed-off-by: Wenpeng Liang <liangwenpeng@huawei.com>
---
 drivers/infiniband/hw/hns/hns_roce_alloc.c  | 70 -----------------------------
 drivers/infiniband/hw/hns/hns_roce_device.h |  5 ---
 2 files changed, 75 deletions(-)

diff --git a/drivers/infiniband/hw/hns/hns_roce_alloc.c b/drivers/infiniband/hw/hns/hns_roce_alloc.c
index 1dc35dd..d4fa0fd 100644
--- a/drivers/infiniband/hw/hns/hns_roce_alloc.c
+++ b/drivers/infiniband/hw/hns/hns_roce_alloc.c
@@ -36,76 +36,6 @@
 #include "hns_roce_device.h"
 #include <rdma/ib_umem.h>
 
-int hns_roce_bitmap_alloc(struct hns_roce_bitmap *bitmap, unsigned long *obj)
-{
-	int ret = 0;
-
-	spin_lock(&bitmap->lock);
-	*obj = find_next_zero_bit(bitmap->table, bitmap->max, bitmap->last);
-	if (*obj >= bitmap->max) {
-		bitmap->top = (bitmap->top + bitmap->max + bitmap->reserved_top)
-			       & bitmap->mask;
-		*obj = find_first_zero_bit(bitmap->table, bitmap->max);
-	}
-
-	if (*obj < bitmap->max) {
-		set_bit(*obj, bitmap->table);
-		bitmap->last = (*obj + 1);
-		if (bitmap->last == bitmap->max)
-			bitmap->last = 0;
-		*obj |= bitmap->top;
-	} else {
-		ret = -EINVAL;
-	}
-
-	spin_unlock(&bitmap->lock);
-
-	return ret;
-}
-
-void hns_roce_bitmap_free(struct hns_roce_bitmap *bitmap, unsigned long obj)
-{
-	obj &= bitmap->max + bitmap->reserved_top - 1;
-
-	spin_lock(&bitmap->lock);
-	clear_bit(obj, bitmap->table);
-
-	bitmap->last = min(bitmap->last, obj);
-	bitmap->top = (bitmap->top + bitmap->max + bitmap->reserved_top)
-		       & bitmap->mask;
-	spin_unlock(&bitmap->lock);
-}
-
-int hns_roce_bitmap_init(struct hns_roce_bitmap *bitmap, u32 num, u32 mask,
-			 u32 reserved_bot, u32 reserved_top)
-{
-	u32 i;
-
-	if (num != roundup_pow_of_two(num))
-		return -EINVAL;
-
-	bitmap->last = 0;
-	bitmap->top = 0;
-	bitmap->max = num - reserved_top;
-	bitmap->mask = mask;
-	bitmap->reserved_top = reserved_top;
-	spin_lock_init(&bitmap->lock);
-	bitmap->table = kcalloc(BITS_TO_LONGS(bitmap->max), sizeof(long),
-				GFP_KERNEL);
-	if (!bitmap->table)
-		return -ENOMEM;
-
-	for (i = 0; i < reserved_bot; ++i)
-		set_bit(i, bitmap->table);
-
-	return 0;
-}
-
-void hns_roce_bitmap_cleanup(struct hns_roce_bitmap *bitmap)
-{
-	kfree(bitmap->table);
-}
-
 void hns_roce_buf_free(struct hns_roce_dev *hr_dev, struct hns_roce_buf *buf)
 {
 	struct hns_roce_buf_list *trunks;
diff --git a/drivers/infiniband/hw/hns/hns_roce_device.h b/drivers/infiniband/hw/hns/hns_roce_device.h
index 4b6c3c0..2129da3 100644
--- a/drivers/infiniband/hw/hns/hns_roce_device.h
+++ b/drivers/infiniband/hw/hns/hns_roce_device.h
@@ -1152,11 +1152,6 @@ void hns_roce_cleanup_eq_table(struct hns_roce_dev *hr_dev);
 void hns_roce_cleanup_cq_table(struct hns_roce_dev *hr_dev);
 void hns_roce_cleanup_qp_table(struct hns_roce_dev *hr_dev);
 
-int hns_roce_bitmap_alloc(struct hns_roce_bitmap *bitmap, unsigned long *obj);
-void hns_roce_bitmap_free(struct hns_roce_bitmap *bitmap, unsigned long obj);
-int hns_roce_bitmap_init(struct hns_roce_bitmap *bitmap, u32 num, u32 mask,
-			 u32 reserved_bot, u32 resetrved_top);
-void hns_roce_bitmap_cleanup(struct hns_roce_bitmap *bitmap);
 void hns_roce_cleanup_bitmap(struct hns_roce_dev *hr_dev);
 
 int hns_roce_create_ah(struct ib_ah *ah, struct rdma_ah_init_attr *init_attr,
-- 
2.8.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH for-next 0/3] RDMA/hns: Use ida to manage some index of resources and remove unused bitmap
  2021-08-19  1:36 [PATCH for-next 0/3] RDMA/hns: Use ida to manage some index of resources and remove unused bitmap Wenpeng Liang
                   ` (2 preceding siblings ...)
  2021-08-19  1:36 ` [PATCH for-next 3/3] RDMA/hns: Delete unused hns bitmap interface Wenpeng Liang
@ 2021-08-20 18:48 ` Jason Gunthorpe
  2021-08-21  8:26   ` Wenpeng Liang
  3 siblings, 1 reply; 8+ messages in thread
From: Jason Gunthorpe @ 2021-08-20 18:48 UTC (permalink / raw)
  To: Wenpeng Liang; +Cc: dledford, linux-rdma, linuxarm

On Thu, Aug 19, 2021 at 09:36:17AM +0800, Wenpeng Liang wrote:
> Use the ida interface to replace hns' own bitmap interface. The previous
> ida patchset has replaced qp, cq, mr, pd, and xrcd. This ida patchset
> will replace the remaining uar and srq. Since then, all replacements
> have been completed.
> 
> Link to the previous ida patchset:
> https://patchwork.kernel.org/project/linux-rdma/cover/1623325814-55737-1-git-send-email-liweihang@huawei.com/
> 
> Yangyang Li (3):
>   RDMA/hns: Use IDA interface to manage uar index
>   RDMA/hns: Use IDA interface to manage srq index
>   RDMA/hns: Delete unused hns bitmap interface

It looks OK, but doesn't apply. Can you rebase it and resend? Looks
like it was based on the earlier hns patchset

Thanks,
Jason

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH for-next 0/3] RDMA/hns: Use ida to manage some index of resources and remove unused bitmap
  2021-08-20 18:48 ` [PATCH for-next 0/3] RDMA/hns: Use ida to manage some index of resources and remove unused bitmap Jason Gunthorpe
@ 2021-08-21  8:26   ` Wenpeng Liang
  2021-08-24  9:37     ` Wenpeng Liang
  0 siblings, 1 reply; 8+ messages in thread
From: Wenpeng Liang @ 2021-08-21  8:26 UTC (permalink / raw)
  To: Jason Gunthorpe; +Cc: dledford, linux-rdma, linuxarm



On 2021/8/21 2:48, Jason Gunthorpe wrote:
> On Thu, Aug 19, 2021 at 09:36:17AM +0800, Wenpeng Liang wrote:
>> Use the ida interface to replace hns' own bitmap interface. The previous
>> ida patchset has replaced qp, cq, mr, pd, and xrcd. This ida patchset
>> will replace the remaining uar and srq. Since then, all replacements
>> have been completed.
>>
>> Link to the previous ida patchset:
>> https://patchwork.kernel.org/project/linux-rdma/cover/1623325814-55737-1-git-send-email-liweihang@huawei.com/
>>
>> Yangyang Li (3):
>>   RDMA/hns: Use IDA interface to manage uar index
>>   RDMA/hns: Use IDA interface to manage srq index
>>   RDMA/hns: Delete unused hns bitmap interface
> 
> It looks OK, but doesn't apply. Can you rebase it and resend? Looks
> like it was based on the earlier hns patchset
> 
> Thanks,
> Jason
> .
> 

I will rebase it and resend.

Thanks,
Wenpeng

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH for-next 0/3] RDMA/hns: Use ida to manage some index of resources and remove unused bitmap
  2021-08-21  8:26   ` Wenpeng Liang
@ 2021-08-24  9:37     ` Wenpeng Liang
  2021-08-24 14:12       ` Jason Gunthorpe
  0 siblings, 1 reply; 8+ messages in thread
From: Wenpeng Liang @ 2021-08-24  9:37 UTC (permalink / raw)
  To: Jason Gunthorpe; +Cc: dledford, linux-rdma, linuxarm


On 2021/8/21 16:26, Wenpeng Liang wrote:
> 
> 
> On 2021/8/21 2:48, Jason Gunthorpe wrote:
>> On Thu, Aug 19, 2021 at 09:36:17AM +0800, Wenpeng Liang wrote:
>>> Use the ida interface to replace hns' own bitmap interface. The previous
>>> ida patchset has replaced qp, cq, mr, pd, and xrcd. This ida patchset
>>> will replace the remaining uar and srq. Since then, all replacements
>>> have been completed.
>>>
>>> Link to the previous ida patchset:
>>> https://patchwork.kernel.org/project/linux-rdma/cover/1623325814-55737-1-git-send-email-liweihang@huawei.com/
>>>
>>> Yangyang Li (3):
>>>   RDMA/hns: Use IDA interface to manage uar index
>>>   RDMA/hns: Use IDA interface to manage srq index
>>>   RDMA/hns: Delete unused hns bitmap interface
>>
>> It looks OK, but doesn't apply. Can you rebase it and resend? Looks
>> like it was based on the earlier hns patchset
>>
>> Thanks,
>> Jason
>> .
>>
> 
> I will rebase it and resend.
> 
> Thanks,
> Wenpeng
> .
> 

Hi, Jason
If the jgg-rc-next branch has been revert the patchset
"RDMA/hns: Add support for Dynamic Context Attachment"
(Link:https://patchwork.kernel.org/project/linux-rdma/cover/1627525163-1683-1-git-send -email-liangwenpeng@huawei.com/),
then this patchset can be applied without conflicts, please try again.

Thanks,
Wenpeng

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH for-next 0/3] RDMA/hns: Use ida to manage some index of resources and remove unused bitmap
  2021-08-24  9:37     ` Wenpeng Liang
@ 2021-08-24 14:12       ` Jason Gunthorpe
  0 siblings, 0 replies; 8+ messages in thread
From: Jason Gunthorpe @ 2021-08-24 14:12 UTC (permalink / raw)
  To: Wenpeng Liang; +Cc: dledford, linux-rdma, linuxarm

On Tue, Aug 24, 2021 at 05:37:03PM +0800, Wenpeng Liang wrote:
> 
> On 2021/8/21 16:26, Wenpeng Liang wrote:
> > 
> > 
> > On 2021/8/21 2:48, Jason Gunthorpe wrote:
> >> On Thu, Aug 19, 2021 at 09:36:17AM +0800, Wenpeng Liang wrote:
> >>> Use the ida interface to replace hns' own bitmap interface. The previous
> >>> ida patchset has replaced qp, cq, mr, pd, and xrcd. This ida patchset
> >>> will replace the remaining uar and srq. Since then, all replacements
> >>> have been completed.
> >>>
> >>> Link to the previous ida patchset:
> >>> https://patchwork.kernel.org/project/linux-rdma/cover/1623325814-55737-1-git-send-email-liweihang@huawei.com/
> >>>
> >>> Yangyang Li (3):
> >>>   RDMA/hns: Use IDA interface to manage uar index
> >>>   RDMA/hns: Use IDA interface to manage srq index
> >>>   RDMA/hns: Delete unused hns bitmap interface
> >>
> >> It looks OK, but doesn't apply. Can you rebase it and resend? Looks
> >> like it was based on the earlier hns patchset
> >>
> >> Thanks,
> >> Jason
> >> .
> >>
> > 
> > I will rebase it and resend.
> > 
> > Thanks,
> > Wenpeng
> > .
> > 
> 
> Hi, Jason
> If the jgg-rc-next branch has been revert the patchset
> "RDMA/hns: Add support for Dynamic Context Attachment"
> (Link:https://patchwork.kernel.org/project/linux-rdma/cover/1627525163-1683-1-git-send -email-liangwenpeng@huawei.com/),
> then this patchset can be applied without conflicts, please try again.

Okay, looks good, thanks

Jason

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-08-24 14:12 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-19  1:36 [PATCH for-next 0/3] RDMA/hns: Use ida to manage some index of resources and remove unused bitmap Wenpeng Liang
2021-08-19  1:36 ` [PATCH for-next 1/3] RDMA/hns: Use IDA interface to manage uar index Wenpeng Liang
2021-08-19  1:36 ` [PATCH for-next 2/3] RDMA/hns: Use IDA interface to manage srq index Wenpeng Liang
2021-08-19  1:36 ` [PATCH for-next 3/3] RDMA/hns: Delete unused hns bitmap interface Wenpeng Liang
2021-08-20 18:48 ` [PATCH for-next 0/3] RDMA/hns: Use ida to manage some index of resources and remove unused bitmap Jason Gunthorpe
2021-08-21  8:26   ` Wenpeng Liang
2021-08-24  9:37     ` Wenpeng Liang
2021-08-24 14:12       ` Jason Gunthorpe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).