Re: [PATCH for-next 3/4] RDMA/hns: Support rq record doorbell for kernel space

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jan 25, 2018 at 08:57:36PM +0800, Liuyixian (Eason) wrote:
>
>
> On 2018/1/24 21:21, Leon Romanovsky wrote:
> > On Wed, Jan 24, 2018 at 08:40:42PM +0800, Liuyixian (Eason) wrote:
> >>
> >>
> >> On 2018/1/23 19:07, Leon Romanovsky wrote:
> >>> On Thu, Jan 18, 2018 at 10:34:30AM +0800, Yixian Liu wrote:
> >>>> This patch updates to support rq record doorbell for
> >>>> the kernel space.
> >>>>
> >>>> Signed-off-by: Yixian Liu <liuyixian@xxxxxxxxxx>
> >>>> Signed-off-by: Lijun Ou <oulijun@xxxxxxxxxx>
> >>>> Signed-off-by: Wei Hu (Xavier) <xavier.huwei@xxxxxxxxxx>
> >>>> Signed-off-by: Shaobo Xu <xushaobo2@xxxxxxxxxx>
> >>>> ---
> >>>>  drivers/infiniband/hw/hns/hns_roce_db.c     | 112 ++++++++++++++++++++++++++++
> >>>>  drivers/infiniband/hw/hns/hns_roce_device.h |   6 ++
> >>>>  drivers/infiniband/hw/hns/hns_roce_hw_v2.c  |  15 +---
> >>>>  drivers/infiniband/hw/hns/hns_roce_main.c   |   5 ++
> >>>>  drivers/infiniband/hw/hns/hns_roce_qp.c     |  18 ++++-
> >>>>  5 files changed, 143 insertions(+), 13 deletions(-)
> >>>>
> >>>> diff --git a/drivers/infiniband/hw/hns/hns_roce_db.c b/drivers/infiniband/hw/hns/hns_roce_db.c
> >>>> index 0908208..de3fa94 100644
> >>>> --- a/drivers/infiniband/hw/hns/hns_roce_db.c
> >>>> +++ b/drivers/infiniband/hw/hns/hns_roce_db.c
> >>>> @@ -92,3 +92,115 @@ void hns_roce_db_unmap_user(struct hns_roce_ucontext *context,
> >>>>  	mutex_unlock(&context->db_page_mutex);
> >>>>  }
> >>>>  EXPORT_SYMBOL(hns_roce_db_unmap_user);
> >>>> +
> >>>> +static struct hns_roce_db_pgdir *hns_roce_alloc_db_pgdir(
> >>>> +					struct device *dma_device, gfp_t gfp)
> >>>> +{
> >>>> +	struct hns_roce_db_pgdir *pgdir;
> >>>> +
> >>>> +	pgdir = kzalloc(sizeof(*pgdir), gfp);
> >>>> +	if (!pgdir)
> >>>> +		return NULL;
> >>>> +
> >>>> +	bitmap_fill(pgdir->order1, HNS_ROCE_DB_PER_PAGE / 2);
> >>>> +	pgdir->bits[0] = pgdir->order0;
> >>>
> >>> order0? isn't it equal to zero?
> >>>
> >>
> >> No. Here order0 is the name of a bitmap array and bits[0] points to it.
> >
> > pgdir was allocated with kzalloc() -> all fields are zero ->
> > pgdir->order0 == 0 or pgdir->order0 == NULL -> What is the point in such
> > assignment?
>
> The definition of hns_roce_db_pgdir is in patch [1/4] as following:
>
> 	struct hns_roce_db_pgdir {
> 		struct list_head	list;
> 		DECLARE_BITMAP(order0, HNS_ROCE_DB_PER_PAGE);
> 		DECLARE_BITMAP(order1, HNS_ROCE_DB_PER_PAGE / 2);
> 		unsigned long		*bits[2];
> 		u32			*db_page;
> 		dma_addr_t		db_dma;
> 	};
>
> and,
>
> 	#define DECLARE_BITMAP(name,bits) \
> 		unsigned long name[BITS_TO_LONGS(bits)]
>
> Therefore, pgdir->order0 is the base address of an array, not NULL.

Right, thanks.

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

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux