All of lore.kernel.org
 help / color / mirror / Atom feed
From: oulijun <oulijun-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
To: dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org,
	hal.rosenstock-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org,
	jeffrey.t.kirsher-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org,
	jiri-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org,
	ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	gongyangming-hv44wF8Li93QT0dZR+AlfA@public.gmane.org,
	xiaokun-hv44wF8Li93QT0dZR+AlfA@public.gmane.org,
	tangchaofei-hv44wF8Li93QT0dZR+AlfA@public.gmane.org,
	haifeng.wei-hv44wF8Li93QT0dZR+AlfA@public.gmane.org,
	yisen.zhuang-hv44wF8Li93QT0dZR+AlfA@public.gmane.org,
	yankejian-hv44wF8Li93QT0dZR+AlfA@public.gmane.org,
	lisheng011-hv44wF8Li93QT0dZR+AlfA@public.gmane.org,
	charles.chenxin-hv44wF8Li93QT0dZR+AlfA@public.gmane.org,
	linuxarm-hv44wF8Li93QT0dZR+AlfA@public.gmane.org
Subject: Re: [PATCH 1/3] infiniband: IB/hns: add Hisilicon RoCE support
Date: Wed, 16 Mar 2016 18:26:28 +0800	[thread overview]
Message-ID: <56E934D4.2070100@huawei.com> (raw)
In-Reply-To: <20160312103940.GA15703-2ukJVAZIZ/Y@public.gmane.org>

Hi dledford, thanks for reviewing.

I have modified according to your reivews. I will send a new patch
at soon.

thanks
Lijun Ou

On 2016/3/12 18:39, Leon Romanovsky wrote:
> On Fri, Mar 11, 2016 at 06:37:09PM +0800, Lijun Ou wrote:
>> The driver for Hisilicon RoCE is a platform driver.
>> The driver will support mulitple versions of hardware. Currently only "v1"
>> for hip06 SOC is supported.
>> The driver includes two parts: common driver and hardware-specific
>> operations. hns_roce_v1_hw.c and hns_roce_v1_hw.h are files for
>> hardware-specific operations only for v1 engine, and other files(.c and .h)
>> for common algorithm and common hardware operations
>>
>> Signed-off-by: Lijun Ou <oulijun-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
>> Signed-off-by: Wei Hu(Xavier) <xavier.huwei-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
>> Signed-off-by: Znlong <zhaonenglong-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
>> ---
>>  drivers/infiniband/Kconfig                         |    2 +-
>>  drivers/infiniband/hw/Makefile                     |    1 +
>>  drivers/infiniband/hw/hisilicon/hns/Kconfig        |   10 +
>>  drivers/infiniband/hw/hisilicon/hns/Makefile       |    9 +
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_ah.c  |  114 +
>>  .../infiniband/hw/hisilicon/hns/hns_roce_alloc.c   |  253 ++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_cmd.c |  354 +++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_cmd.h |  163 ++
>>  .../infiniband/hw/hisilicon/hns/hns_roce_common.h  |  704 +++++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_cq.c  |  454 +++
>>  .../infiniband/hw/hisilicon/hns/hns_roce_device.h  |  840 ++++++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_eq.c  |  798 ++++++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_eq.h  |  138 +
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_icm.c |  608 ++++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_icm.h |  121 +
>>  .../infiniband/hw/hisilicon/hns/hns_roce_main.c    | 1124 ++++++++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_mr.c  |  637 +++++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_pd.c  |  129 +
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_qp.c  |  890 ++++++
>>  .../infiniband/hw/hisilicon/hns/hns_roce_user.h    |   31 +
>>  .../infiniband/hw/hisilicon/hns/hns_roce_v1_hw.c   | 2992 ++++++++++++++++++++
>>  .../infiniband/hw/hisilicon/hns/hns_roce_v1_hw.h   | 1068 +++++++
>>  22 files changed, 11439 insertions(+), 1 deletion(-)
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/Kconfig
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/Makefile
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_ah.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_alloc.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_cmd.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_cmd.h
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_common.h
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_cq.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_device.h
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_eq.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_eq.h
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_icm.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_icm.h
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_main.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_mr.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_pd.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_qp.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_user.h
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_v1_hw.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_v1_hw.h
>>
>> diff --git a/drivers/infiniband/Kconfig b/drivers/infiniband/Kconfig
>> index 8a8440c..c7a24bb 100644
>> --- a/drivers/infiniband/Kconfig
>> +++ b/drivers/infiniband/Kconfig
>> @@ -73,7 +73,7 @@ source "drivers/infiniband/hw/mlx5/Kconfig"
>>  source "drivers/infiniband/hw/nes/Kconfig"
>>  source "drivers/infiniband/hw/ocrdma/Kconfig"
>>  source "drivers/infiniband/hw/usnic/Kconfig"
>> -
> 
> No need to remove this line. It separates HW from ULPs.
> 
>> +source "drivers/infiniband/hw/hisilicon/hns/Kconfig"
>>  source "drivers/infiniband/ulp/ipoib/Kconfig"
>>  
>>  source "drivers/infiniband/ulp/srp/Kconfig"
> 
> <snip>
> 
>> +int hns_roce_bitmap_alloc_range(
>> +					struct hns_roce_bitmap *bitmap,
>> +					int cnt, int align, u32 *obj)
> 
> You have indentation issues.
> 
>> +{
>> +	int i;
>> +	int ret = 0;
>> +
>> +	if (likely(cnt == 1 && align == 1))
>> +		return hns_roce_bitmap_alloc(bitmap, obj);
>> +
>> +	spin_lock(&bitmap->lock);
>> +
>> +	*obj = bitmap_find_next_zero_area(bitmap->table, bitmap->max,
>> +					  bitmap->last, cnt, align - 1);
>> +	if (*obj >= bitmap->max) {
>> +		bitmap->top = (bitmap->top + bitmap->max + bitmap->reserved_top)
>> +			       & bitmap->mask;
>> +		*obj = bitmap_find_next_zero_area(bitmap->table, bitmap->max, 0,
>> +						  cnt, align - 1);
>> +	}
>> +
>> +	if (*obj < bitmap->max) {
>> +		for (i = 0; i < cnt; i++)
>> +			set_bit(*obj + i, bitmap->table);
>> +
>> +		if (*obj == bitmap->last) {
>> +			bitmap->last = (*obj + cnt);
>> +			if (bitmap->last >= bitmap->max)
>> +				bitmap->last = 0;
>> +		}
>> +		*obj |= bitmap->top;
>> +	} else {
>> +		ret = -1;
>> +	}
>> +
>> +	spin_unlock(&bitmap->lock);
>> +
>> +	return ret;
>> +}
>> +
>> +void hns_roce_bitmap_free_range(
>> +					struct hns_roce_bitmap *bitmap,
>> +					u32 obj,
>> +					int cnt)
>> +{
>> +	int i;
>> +
>> +	obj &= bitmap->max + bitmap->reserved_top - 1;
>> +
>> +	spin_lock(&bitmap->lock);
>> +	for (i = 0; i < cnt; i++)
>> +		clear_bit(obj + i, 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 =
>> +		kzalloc(BITS_TO_LONGS(bitmap->max) * sizeof(long), GFP_KERNEL);
> 
> Here and below, please consider to use kcalloc.
> 
>> +	if (!bitmap->table)
>> +		return -ENOMEM;
>> +
>> +	for (i = 0; i < reserved_bot; ++i)
> 
> .
> 


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: oulijun <oulijun@huawei.com>
To: <dledford@redhat.com>, <sean.hefty@intel.com>,
	<hal.rosenstock@gmail.com>, <davem@davemloft.net>,
	<jeffrey.t.kirsher@intel.com>, <jiri@mellanox.com>,
	<ogerlitz@mellanox.com>, <linux-rdma@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <netdev@vger.kernel.org>,
	<gongyangming@huawei.com>, <xiaokun@huawei.com>,
	<tangchaofei@huawei.com>, <haifeng.wei@huawei.com>,
	<yisen.zhuang@huawei.com>, <yankejian@huawei.com>,
	<lisheng011@huawei.com>, <charles.chenxin@huawei.com>,
	<linuxarm@huawei.com>
Subject: Re: [PATCH 1/3] infiniband: IB/hns: add Hisilicon RoCE support
Date: Wed, 16 Mar 2016 18:26:28 +0800	[thread overview]
Message-ID: <56E934D4.2070100@huawei.com> (raw)
In-Reply-To: <20160312103940.GA15703@leon.nu>

Hi dledford, thanks for reviewing.

I have modified according to your reivews. I will send a new patch
at soon.

thanks
Lijun Ou

On 2016/3/12 18:39, Leon Romanovsky wrote:
> On Fri, Mar 11, 2016 at 06:37:09PM +0800, Lijun Ou wrote:
>> The driver for Hisilicon RoCE is a platform driver.
>> The driver will support mulitple versions of hardware. Currently only "v1"
>> for hip06 SOC is supported.
>> The driver includes two parts: common driver and hardware-specific
>> operations. hns_roce_v1_hw.c and hns_roce_v1_hw.h are files for
>> hardware-specific operations only for v1 engine, and other files(.c and .h)
>> for common algorithm and common hardware operations
>>
>> Signed-off-by: Lijun Ou <oulijun@huawei.com>
>> Signed-off-by: Wei Hu(Xavier) <xavier.huwei@huawei.com>
>> Signed-off-by: Znlong <zhaonenglong@huawei.com>
>> ---
>>  drivers/infiniband/Kconfig                         |    2 +-
>>  drivers/infiniband/hw/Makefile                     |    1 +
>>  drivers/infiniband/hw/hisilicon/hns/Kconfig        |   10 +
>>  drivers/infiniband/hw/hisilicon/hns/Makefile       |    9 +
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_ah.c  |  114 +
>>  .../infiniband/hw/hisilicon/hns/hns_roce_alloc.c   |  253 ++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_cmd.c |  354 +++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_cmd.h |  163 ++
>>  .../infiniband/hw/hisilicon/hns/hns_roce_common.h  |  704 +++++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_cq.c  |  454 +++
>>  .../infiniband/hw/hisilicon/hns/hns_roce_device.h  |  840 ++++++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_eq.c  |  798 ++++++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_eq.h  |  138 +
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_icm.c |  608 ++++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_icm.h |  121 +
>>  .../infiniband/hw/hisilicon/hns/hns_roce_main.c    | 1124 ++++++++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_mr.c  |  637 +++++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_pd.c  |  129 +
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_qp.c  |  890 ++++++
>>  .../infiniband/hw/hisilicon/hns/hns_roce_user.h    |   31 +
>>  .../infiniband/hw/hisilicon/hns/hns_roce_v1_hw.c   | 2992 ++++++++++++++++++++
>>  .../infiniband/hw/hisilicon/hns/hns_roce_v1_hw.h   | 1068 +++++++
>>  22 files changed, 11439 insertions(+), 1 deletion(-)
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/Kconfig
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/Makefile
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_ah.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_alloc.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_cmd.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_cmd.h
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_common.h
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_cq.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_device.h
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_eq.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_eq.h
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_icm.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_icm.h
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_main.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_mr.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_pd.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_qp.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_user.h
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_v1_hw.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_v1_hw.h
>>
>> diff --git a/drivers/infiniband/Kconfig b/drivers/infiniband/Kconfig
>> index 8a8440c..c7a24bb 100644
>> --- a/drivers/infiniband/Kconfig
>> +++ b/drivers/infiniband/Kconfig
>> @@ -73,7 +73,7 @@ source "drivers/infiniband/hw/mlx5/Kconfig"
>>  source "drivers/infiniband/hw/nes/Kconfig"
>>  source "drivers/infiniband/hw/ocrdma/Kconfig"
>>  source "drivers/infiniband/hw/usnic/Kconfig"
>> -
> 
> No need to remove this line. It separates HW from ULPs.
> 
>> +source "drivers/infiniband/hw/hisilicon/hns/Kconfig"
>>  source "drivers/infiniband/ulp/ipoib/Kconfig"
>>  
>>  source "drivers/infiniband/ulp/srp/Kconfig"
> 
> <snip>
> 
>> +int hns_roce_bitmap_alloc_range(
>> +					struct hns_roce_bitmap *bitmap,
>> +					int cnt, int align, u32 *obj)
> 
> You have indentation issues.
> 
>> +{
>> +	int i;
>> +	int ret = 0;
>> +
>> +	if (likely(cnt == 1 && align == 1))
>> +		return hns_roce_bitmap_alloc(bitmap, obj);
>> +
>> +	spin_lock(&bitmap->lock);
>> +
>> +	*obj = bitmap_find_next_zero_area(bitmap->table, bitmap->max,
>> +					  bitmap->last, cnt, align - 1);
>> +	if (*obj >= bitmap->max) {
>> +		bitmap->top = (bitmap->top + bitmap->max + bitmap->reserved_top)
>> +			       & bitmap->mask;
>> +		*obj = bitmap_find_next_zero_area(bitmap->table, bitmap->max, 0,
>> +						  cnt, align - 1);
>> +	}
>> +
>> +	if (*obj < bitmap->max) {
>> +		for (i = 0; i < cnt; i++)
>> +			set_bit(*obj + i, bitmap->table);
>> +
>> +		if (*obj == bitmap->last) {
>> +			bitmap->last = (*obj + cnt);
>> +			if (bitmap->last >= bitmap->max)
>> +				bitmap->last = 0;
>> +		}
>> +		*obj |= bitmap->top;
>> +	} else {
>> +		ret = -1;
>> +	}
>> +
>> +	spin_unlock(&bitmap->lock);
>> +
>> +	return ret;
>> +}
>> +
>> +void hns_roce_bitmap_free_range(
>> +					struct hns_roce_bitmap *bitmap,
>> +					u32 obj,
>> +					int cnt)
>> +{
>> +	int i;
>> +
>> +	obj &= bitmap->max + bitmap->reserved_top - 1;
>> +
>> +	spin_lock(&bitmap->lock);
>> +	for (i = 0; i < cnt; i++)
>> +		clear_bit(obj + i, 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 =
>> +		kzalloc(BITS_TO_LONGS(bitmap->max) * sizeof(long), GFP_KERNEL);
> 
> Here and below, please consider to use kcalloc.
> 
>> +	if (!bitmap->table)
>> +		return -ENOMEM;
>> +
>> +	for (i = 0; i < reserved_bot; ++i)
> 
> .
> 

WARNING: multiple messages have this Message-ID (diff)
From: oulijun <oulijun-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
To: <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	<sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	<hal.rosenstock-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	<davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>,
	<jeffrey.t.kirsher-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	<jiri-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
	<ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
	<linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	<netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	<gongyangming-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>,
	<xiaokun-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>,
	<tangchaofei-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>,
	<haifeng.wei-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>,
	<yisen.zhuang-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>,
	<yankejian-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>,
	<lisheng011-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>,
	<charles.chenxin-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>,
	<linuxarm-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH 1/3] infiniband: IB/hns: add Hisilicon RoCE support
Date: Wed, 16 Mar 2016 18:26:28 +0800	[thread overview]
Message-ID: <56E934D4.2070100@huawei.com> (raw)
In-Reply-To: <20160312103940.GA15703-2ukJVAZIZ/Y@public.gmane.org>

Hi dledford, thanks for reviewing.

I have modified according to your reivews. I will send a new patch
at soon.

thanks
Lijun Ou

On 2016/3/12 18:39, Leon Romanovsky wrote:
> On Fri, Mar 11, 2016 at 06:37:09PM +0800, Lijun Ou wrote:
>> The driver for Hisilicon RoCE is a platform driver.
>> The driver will support mulitple versions of hardware. Currently only "v1"
>> for hip06 SOC is supported.
>> The driver includes two parts: common driver and hardware-specific
>> operations. hns_roce_v1_hw.c and hns_roce_v1_hw.h are files for
>> hardware-specific operations only for v1 engine, and other files(.c and .h)
>> for common algorithm and common hardware operations
>>
>> Signed-off-by: Lijun Ou <oulijun-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
>> Signed-off-by: Wei Hu(Xavier) <xavier.huwei-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
>> Signed-off-by: Znlong <zhaonenglong-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
>> ---
>>  drivers/infiniband/Kconfig                         |    2 +-
>>  drivers/infiniband/hw/Makefile                     |    1 +
>>  drivers/infiniband/hw/hisilicon/hns/Kconfig        |   10 +
>>  drivers/infiniband/hw/hisilicon/hns/Makefile       |    9 +
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_ah.c  |  114 +
>>  .../infiniband/hw/hisilicon/hns/hns_roce_alloc.c   |  253 ++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_cmd.c |  354 +++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_cmd.h |  163 ++
>>  .../infiniband/hw/hisilicon/hns/hns_roce_common.h  |  704 +++++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_cq.c  |  454 +++
>>  .../infiniband/hw/hisilicon/hns/hns_roce_device.h  |  840 ++++++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_eq.c  |  798 ++++++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_eq.h  |  138 +
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_icm.c |  608 ++++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_icm.h |  121 +
>>  .../infiniband/hw/hisilicon/hns/hns_roce_main.c    | 1124 ++++++++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_mr.c  |  637 +++++
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_pd.c  |  129 +
>>  drivers/infiniband/hw/hisilicon/hns/hns_roce_qp.c  |  890 ++++++
>>  .../infiniband/hw/hisilicon/hns/hns_roce_user.h    |   31 +
>>  .../infiniband/hw/hisilicon/hns/hns_roce_v1_hw.c   | 2992 ++++++++++++++++++++
>>  .../infiniband/hw/hisilicon/hns/hns_roce_v1_hw.h   | 1068 +++++++
>>  22 files changed, 11439 insertions(+), 1 deletion(-)
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/Kconfig
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/Makefile
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_ah.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_alloc.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_cmd.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_cmd.h
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_common.h
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_cq.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_device.h
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_eq.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_eq.h
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_icm.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_icm.h
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_main.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_mr.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_pd.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_qp.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_user.h
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_v1_hw.c
>>  create mode 100644 drivers/infiniband/hw/hisilicon/hns/hns_roce_v1_hw.h
>>
>> diff --git a/drivers/infiniband/Kconfig b/drivers/infiniband/Kconfig
>> index 8a8440c..c7a24bb 100644
>> --- a/drivers/infiniband/Kconfig
>> +++ b/drivers/infiniband/Kconfig
>> @@ -73,7 +73,7 @@ source "drivers/infiniband/hw/mlx5/Kconfig"
>>  source "drivers/infiniband/hw/nes/Kconfig"
>>  source "drivers/infiniband/hw/ocrdma/Kconfig"
>>  source "drivers/infiniband/hw/usnic/Kconfig"
>> -
> 
> No need to remove this line. It separates HW from ULPs.
> 
>> +source "drivers/infiniband/hw/hisilicon/hns/Kconfig"
>>  source "drivers/infiniband/ulp/ipoib/Kconfig"
>>  
>>  source "drivers/infiniband/ulp/srp/Kconfig"
> 
> <snip>
> 
>> +int hns_roce_bitmap_alloc_range(
>> +					struct hns_roce_bitmap *bitmap,
>> +					int cnt, int align, u32 *obj)
> 
> You have indentation issues.
> 
>> +{
>> +	int i;
>> +	int ret = 0;
>> +
>> +	if (likely(cnt == 1 && align == 1))
>> +		return hns_roce_bitmap_alloc(bitmap, obj);
>> +
>> +	spin_lock(&bitmap->lock);
>> +
>> +	*obj = bitmap_find_next_zero_area(bitmap->table, bitmap->max,
>> +					  bitmap->last, cnt, align - 1);
>> +	if (*obj >= bitmap->max) {
>> +		bitmap->top = (bitmap->top + bitmap->max + bitmap->reserved_top)
>> +			       & bitmap->mask;
>> +		*obj = bitmap_find_next_zero_area(bitmap->table, bitmap->max, 0,
>> +						  cnt, align - 1);
>> +	}
>> +
>> +	if (*obj < bitmap->max) {
>> +		for (i = 0; i < cnt; i++)
>> +			set_bit(*obj + i, bitmap->table);
>> +
>> +		if (*obj == bitmap->last) {
>> +			bitmap->last = (*obj + cnt);
>> +			if (bitmap->last >= bitmap->max)
>> +				bitmap->last = 0;
>> +		}
>> +		*obj |= bitmap->top;
>> +	} else {
>> +		ret = -1;
>> +	}
>> +
>> +	spin_unlock(&bitmap->lock);
>> +
>> +	return ret;
>> +}
>> +
>> +void hns_roce_bitmap_free_range(
>> +					struct hns_roce_bitmap *bitmap,
>> +					u32 obj,
>> +					int cnt)
>> +{
>> +	int i;
>> +
>> +	obj &= bitmap->max + bitmap->reserved_top - 1;
>> +
>> +	spin_lock(&bitmap->lock);
>> +	for (i = 0; i < cnt; i++)
>> +		clear_bit(obj + i, 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 =
>> +		kzalloc(BITS_TO_LONGS(bitmap->max) * sizeof(long), GFP_KERNEL);
> 
> Here and below, please consider to use kcalloc.
> 
>> +	if (!bitmap->table)
>> +		return -ENOMEM;
>> +
>> +	for (i = 0; i < reserved_bot; ++i)
> 
> .
> 


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2016-03-16 10:26 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-11 10:37 [PATCH 0/3] infiniband: IB/hns: Hisilicon RoCE support Lijun Ou
2016-03-11 10:37 ` Lijun Ou
2016-03-11 10:37 ` [PATCH 1/3] infiniband: IB/hns: add " Lijun Ou
2016-03-11 10:37   ` Lijun Ou
     [not found]   ` <1457692631-9290-2-git-send-email-oulijun-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2016-03-11 10:42     ` Jiri Pirko
2016-03-11 10:42       ` Jiri Pirko
     [not found]       ` <20160311104239.GD3931-6KJVSR23iU488b5SBfVpbw@public.gmane.org>
2016-03-16 10:23         ` oulijun
2016-03-16 10:23           ` oulijun
2016-03-16 10:23           ` oulijun
     [not found]           ` <56E9340E.3040207-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2016-03-16 10:36             ` Jiri Pirko
2016-03-16 10:36               ` Jiri Pirko
2016-03-17  6:43               ` Leon Romanovsky
2016-03-19 11:11                 ` oulijun
2016-03-19 11:11                   ` oulijun
2016-03-12 10:39   ` Leon Romanovsky
     [not found]     ` <20160312103940.GA15703-2ukJVAZIZ/Y@public.gmane.org>
2016-03-16 10:26       ` oulijun [this message]
2016-03-16 10:26         ` oulijun
2016-03-16 10:26         ` oulijun
2016-03-11 10:37 ` [PATCH 2/3] net: hns: " Lijun Ou
2016-03-11 10:37   ` Lijun Ou
2016-03-12 10:43   ` Leon Romanovsky
     [not found]     ` <20160312104301.GB15703-2ukJVAZIZ/Y@public.gmane.org>
2016-03-14  1:12       ` Yankejian (Hackim Yim)
2016-03-14  1:12         ` Yankejian (Hackim Yim)
2016-03-14  1:12         ` Yankejian (Hackim Yim)
     [not found]         ` <56E60FFC.3000007-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2016-03-14  6:49           ` Leon Romanovsky
2016-03-14  6:49             ` Leon Romanovsky
2016-03-19 11:17             ` oulijun
2016-03-19 11:17               ` oulijun
     [not found] ` <1457692631-9290-1-git-send-email-oulijun-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2016-03-11 10:37   ` [PATCH 3/3] infiniband: IB/hns: add Hisilicon RoCE support with bindings Lijun Ou
2016-03-11 10:37     ` Lijun Ou
2016-03-11 10:37     ` Lijun Ou
     [not found]     ` <1457692631-9290-4-git-send-email-oulijun-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2016-03-11 13:39       ` Sergei Shtylyov
2016-03-11 13:39         ` Sergei Shtylyov
     [not found]         ` <56E2CA90.9020401-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org>
2016-03-19 11:14           ` oulijun
2016-03-19 11:14             ` oulijun
2016-03-19 11:14             ` oulijun
2016-03-12 10:20 ` [PATCH 0/3] infiniband: IB/hns: Hisilicon RoCE support Leon Romanovsky
2016-03-19 11:13   ` oulijun
2016-03-19 11:13     ` oulijun

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56E934D4.2070100@huawei.com \
    --to=oulijun-hv44wf8li93qt0dzr+alfa@public.gmane.org \
    --cc=charles.chenxin-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
    --cc=davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org \
    --cc=dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=gongyangming-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
    --cc=haifeng.wei-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
    --cc=hal.rosenstock-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=jeffrey.t.kirsher-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=jiri-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linuxarm-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
    --cc=lisheng011-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
    --cc=netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
    --cc=sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=tangchaofei-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
    --cc=xiaokun-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
    --cc=yankejian-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
    --cc=yisen.zhuang-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.