Re: [PATCH v6 2/3] uacce: add uacce driver

From: Jean-Philippe Brucker
Date: Fri Oct 25 2019 - 03:35:45 EST


On Fri, Oct 25, 2019 at 10:28:30AM +0800, zhangfei.gao@xxxxxxxxxxx wrote:
> > Something else I noticed is uacce_idr isn't currently protected. The IDR
> > API expected the caller to use its own locking scheme. You could replace
> > it with an xarray, which I think is preferred to IDR now and provides a
> > xa_lock.
> Currently idr_alloc and idr_remove are simply protected by uacce_mutex,

Ah right, but idr_find() also needs to be protected?

> Will check xarray, looks it is more complicated then idr.

Having tried both, it can easily replace idr. For uacce I think it could
be something like (locking included):

static DEFINE_XARRAY_ALLOC(uacce_xa);

uacce = xa_load(&uacce_xa, iminor(inode));

ret = xa_alloc(&uacce_xa, &uacce->dev_id, uacce, xa_limit_32b,
GFP_KERNEL);

xa_erase(&uacce_xa, uacce->dev_id);

Thanks,
Jean