Thomas Bogendoerfer 08f353
From: Yangyang Li <liyangyang20@huawei.com>
Thomas Bogendoerfer 08f353
Date: Thu, 19 Aug 2021 09:36:20 +0800
Thomas Bogendoerfer 08f353
Subject: RDMA/hns: Delete unused hns bitmap interface
Thomas Bogendoerfer 08f353
Patch-mainline: v5.15-rc1
Thomas Bogendoerfer 08f353
Git-commit: f0a64199195e5adfff921cb7bf4e4e67e1916401
Thomas Bogendoerfer 08f353
References: bsc#1190336
Thomas Bogendoerfer 08f353
Thomas Bogendoerfer 08f353
The resources that use the hns bitmap interface: qp, cq, mr, pd, xrcd,
Thomas Bogendoerfer 08f353
uar, srq, have been changed to IDA interfaces, and the unused hns' own
Thomas Bogendoerfer 08f353
bitmap interfaces need to be deleted.
Thomas Bogendoerfer 08f353
Thomas Bogendoerfer 08f353
Link: https://lore.kernel.org/r/1629336980-17499-4-git-send-email-liangwenpeng@huawei.com
Thomas Bogendoerfer 08f353
Signed-off-by: Yangyang Li <liyangyang20@huawei.com>
Thomas Bogendoerfer 08f353
Signed-off-by: Wenpeng Liang <liangwenpeng@huawei.com>
Thomas Bogendoerfer 08f353
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Thomas Bogendoerfer 08f353
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Thomas Bogendoerfer 08f353
---
Thomas Bogendoerfer 08f353
 drivers/infiniband/hw/hns/hns_roce_alloc.c  |   70 ----------------------------
Thomas Bogendoerfer 08f353
 drivers/infiniband/hw/hns/hns_roce_device.h |    5 --
Thomas Bogendoerfer 08f353
 2 files changed, 75 deletions(-)
Thomas Bogendoerfer 08f353
Thomas Bogendoerfer 08f353
--- a/drivers/infiniband/hw/hns/hns_roce_alloc.c
Thomas Bogendoerfer 08f353
+++ b/drivers/infiniband/hw/hns/hns_roce_alloc.c
Thomas Bogendoerfer 08f353
@@ -36,76 +36,6 @@
Thomas Bogendoerfer 08f353
 #include "hns_roce_device.h"
Thomas Bogendoerfer 08f353
 #include <rdma/ib_umem.h>
Thomas Bogendoerfer 08f353
 
Thomas Bogendoerfer 08f353
-int hns_roce_bitmap_alloc(struct hns_roce_bitmap *bitmap, unsigned long *obj)
Thomas Bogendoerfer 08f353
-{
Thomas Bogendoerfer 08f353
-	int ret = 0;
Thomas Bogendoerfer 08f353
-
Thomas Bogendoerfer 08f353
-	spin_lock(&bitmap->lock);
Thomas Bogendoerfer 08f353
-	*obj = find_next_zero_bit(bitmap->table, bitmap->max, bitmap->last);
Thomas Bogendoerfer 08f353
-	if (*obj >= bitmap->max) {
Thomas Bogendoerfer 08f353
-		bitmap->top = (bitmap->top + bitmap->max + bitmap->reserved_top)
Thomas Bogendoerfer 08f353
-			       & bitmap->mask;
Thomas Bogendoerfer 08f353
-		*obj = find_first_zero_bit(bitmap->table, bitmap->max);
Thomas Bogendoerfer 08f353
-	}
Thomas Bogendoerfer 08f353
-
Thomas Bogendoerfer 08f353
-	if (*obj < bitmap->max) {
Thomas Bogendoerfer 08f353
-		set_bit(*obj, bitmap->table);
Thomas Bogendoerfer 08f353
-		bitmap->last = (*obj + 1);
Thomas Bogendoerfer 08f353
-		if (bitmap->last == bitmap->max)
Thomas Bogendoerfer 08f353
-			bitmap->last = 0;
Thomas Bogendoerfer 08f353
-		*obj |= bitmap->top;
Thomas Bogendoerfer 08f353
-	} else {
Thomas Bogendoerfer 08f353
-		ret = -EINVAL;
Thomas Bogendoerfer 08f353
-	}
Thomas Bogendoerfer 08f353
-
Thomas Bogendoerfer 08f353
-	spin_unlock(&bitmap->lock);
Thomas Bogendoerfer 08f353
-
Thomas Bogendoerfer 08f353
-	return ret;
Thomas Bogendoerfer 08f353
-}
Thomas Bogendoerfer 08f353
-
Thomas Bogendoerfer 08f353
-void hns_roce_bitmap_free(struct hns_roce_bitmap *bitmap, unsigned long obj)
Thomas Bogendoerfer 08f353
-{
Thomas Bogendoerfer 08f353
-	obj &= bitmap->max + bitmap->reserved_top - 1;
Thomas Bogendoerfer 08f353
-
Thomas Bogendoerfer 08f353
-	spin_lock(&bitmap->lock);
Thomas Bogendoerfer 08f353
-	clear_bit(obj, bitmap->table);
Thomas Bogendoerfer 08f353
-
Thomas Bogendoerfer 08f353
-	bitmap->last = min(bitmap->last, obj);
Thomas Bogendoerfer 08f353
-	bitmap->top = (bitmap->top + bitmap->max + bitmap->reserved_top)
Thomas Bogendoerfer 08f353
-		       & bitmap->mask;
Thomas Bogendoerfer 08f353
-	spin_unlock(&bitmap->lock);
Thomas Bogendoerfer 08f353
-}
Thomas Bogendoerfer 08f353
-
Thomas Bogendoerfer 08f353
-int hns_roce_bitmap_init(struct hns_roce_bitmap *bitmap, u32 num, u32 mask,
Thomas Bogendoerfer 08f353
-			 u32 reserved_bot, u32 reserved_top)
Thomas Bogendoerfer 08f353
-{
Thomas Bogendoerfer 08f353
-	u32 i;
Thomas Bogendoerfer 08f353
-
Thomas Bogendoerfer 08f353
-	if (num != roundup_pow_of_two(num))
Thomas Bogendoerfer 08f353
-		return -EINVAL;
Thomas Bogendoerfer 08f353
-
Thomas Bogendoerfer 08f353
-	bitmap->last = 0;
Thomas Bogendoerfer 08f353
-	bitmap->top = 0;
Thomas Bogendoerfer 08f353
-	bitmap->max = num - reserved_top;
Thomas Bogendoerfer 08f353
-	bitmap->mask = mask;
Thomas Bogendoerfer 08f353
-	bitmap->reserved_top = reserved_top;
Thomas Bogendoerfer 08f353
-	spin_lock_init(&bitmap->lock);
Thomas Bogendoerfer 08f353
-	bitmap->table = kcalloc(BITS_TO_LONGS(bitmap->max), sizeof(long),
Thomas Bogendoerfer 08f353
-				GFP_KERNEL);
Thomas Bogendoerfer 08f353
-	if (!bitmap->table)
Thomas Bogendoerfer 08f353
-		return -ENOMEM;
Thomas Bogendoerfer 08f353
-
Thomas Bogendoerfer 08f353
-	for (i = 0; i < reserved_bot; ++i)
Thomas Bogendoerfer 08f353
-		set_bit(i, bitmap->table);
Thomas Bogendoerfer 08f353
-
Thomas Bogendoerfer 08f353
-	return 0;
Thomas Bogendoerfer 08f353
-}
Thomas Bogendoerfer 08f353
-
Thomas Bogendoerfer 08f353
-void hns_roce_bitmap_cleanup(struct hns_roce_bitmap *bitmap)
Thomas Bogendoerfer 08f353
-{
Thomas Bogendoerfer 08f353
-	kfree(bitmap->table);
Thomas Bogendoerfer 08f353
-}
Thomas Bogendoerfer 08f353
-
Thomas Bogendoerfer 08f353
 void hns_roce_buf_free(struct hns_roce_dev *hr_dev, struct hns_roce_buf *buf)
Thomas Bogendoerfer 08f353
 {
Thomas Bogendoerfer 08f353
 	struct hns_roce_buf_list *trunks;
Thomas Bogendoerfer 08f353
--- a/drivers/infiniband/hw/hns/hns_roce_device.h
Thomas Bogendoerfer 08f353
+++ b/drivers/infiniband/hw/hns/hns_roce_device.h
Thomas Bogendoerfer 08f353
@@ -1152,11 +1152,6 @@ void hns_roce_cleanup_eq_table(struct hn
Thomas Bogendoerfer 08f353
 void hns_roce_cleanup_cq_table(struct hns_roce_dev *hr_dev);
Thomas Bogendoerfer 08f353
 void hns_roce_cleanup_qp_table(struct hns_roce_dev *hr_dev);
Thomas Bogendoerfer 08f353
 
Thomas Bogendoerfer 08f353
-int hns_roce_bitmap_alloc(struct hns_roce_bitmap *bitmap, unsigned long *obj);
Thomas Bogendoerfer 08f353
-void hns_roce_bitmap_free(struct hns_roce_bitmap *bitmap, unsigned long obj);
Thomas Bogendoerfer 08f353
-int hns_roce_bitmap_init(struct hns_roce_bitmap *bitmap, u32 num, u32 mask,
Thomas Bogendoerfer 08f353
-			 u32 reserved_bot, u32 resetrved_top);
Thomas Bogendoerfer 08f353
-void hns_roce_bitmap_cleanup(struct hns_roce_bitmap *bitmap);
Thomas Bogendoerfer 08f353
 void hns_roce_cleanup_bitmap(struct hns_roce_dev *hr_dev);
Thomas Bogendoerfer 08f353
 
Thomas Bogendoerfer 08f353
 int hns_roce_create_ah(struct ib_ah *ah, struct rdma_ah_init_attr *init_attr,