Re: [PATCH v4 for-next 1/4] RDMA/hns: Support rq record doorbell for the user space

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

 



On Mon, Feb 26, 2018 at 03:43:09PM +0800, Liuyixian (Eason) wrote:
> 
> 
> On 2018/2/16 7:23, Jason Gunthorpe wrote:
> > On Mon, Feb 12, 2018 at 06:14:08PM +0800, Yixian Liu wrote:
> >> +int hns_roce_db_map_user(struct hns_roce_ucontext *context, unsigned long virt,
> >> +			 struct hns_roce_db *db)
> >> +{
> >> +	struct hns_roce_user_db_page *db_page;
> >> +	int ret = 0;
> >> +
> >> +	mutex_lock(&context->db_page_mutex);
> >> +
> >> +	list_for_each_entry(db_page, &context->db_page_list, list)
> >> +		if (db_page->user_virt == (virt & PAGE_MASK))
> >> +			goto found;
> >> +
> >> +	db_page = kmalloc(sizeof(*db_page), GFP_KERNEL);
> >> +	if (!db_page) {
> >> +		ret = -ENOMEM;
> >> +		goto out;
> >> +	}
> >> +
> >> +	db_page->user_virt = (virt & PAGE_MASK);
> >> +	db_page->refcount_t = 0;
> >> +	db_page->umem      = ib_umem_get(&context->ibucontext, virt & PAGE_MASK,
> >> +					 PAGE_SIZE, 0, 0);
> > 
> > It seems quite odd to call something 'doorbell' that exists in system
> > memory? doorbell should exist in BAR memory..
> > 
> 
> I will rename db_page to page to avoid confusion in v5.

Don't forget to do the user space side too.

Seems like you should have some kind of name for this, but I don't
really know what it is for..

> >> +	if (IS_ERR(db_page->umem)) {
> >> +		ret = PTR_ERR(db_page->umem);
> >> +		kfree(db_page);
> >> +		goto out;
> >> +	}
> >> +
> >> +	list_add(&db_page->list, &context->db_page_list);
> >> +
> >> +found:
> >> +	db->dma = sg_dma_address(db_page->umem->sg_head.sgl) +
> >> +		  (virt & ~PAGE_MASK);
> >> +	db->u.user_page = db_page;
> >> +	++db_page->refcount_t;
> > 
> > Since user space controls this it should be a refcount_t
> 
> Do you mean I should pass the refcount_t from user space to kernel and
> here use the user space refcount_t?

No.. I mean:
	++db_page->refcount_t;

Should be:
        refcount_inc(&db_page->refcount);

To prevent userspace from overflowing the refcount and causing
something bad from happening.

Jason
--
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



[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