Message ID | 20180621212835.5636-17-willy@infradead.org (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
On 21-06-18, 14:28, Matthew Wilcox wrote: > Simpler and shorter code. I couldn't find ida_alloc/ida_free in 4.18-rc1 so I assume this will go thru tree adding this so: Acked-by: Vinod Koul <vkoul@kernel.org> > > Signed-off-by: Matthew Wilcox <willy@infradead.org> > --- > drivers/dma/dmaengine.c | 20 +++++--------------- > 1 file changed, 5 insertions(+), 15 deletions(-) > > diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c > index 08ba8473a284..1e9bdadfc312 100644 > --- a/drivers/dma/dmaengine.c > +++ b/drivers/dma/dmaengine.c > @@ -161,9 +161,7 @@ static void chan_dev_release(struct device *dev) > > chan_dev = container_of(dev, typeof(*chan_dev), device); > if (atomic_dec_and_test(chan_dev->idr_ref)) { > - mutex_lock(&dma_list_mutex); > - ida_remove(&dma_ida, chan_dev->dev_id); > - mutex_unlock(&dma_list_mutex); > + ida_free(&dma_ida, chan_dev->dev_id); > kfree(chan_dev->idr_ref); > } > kfree(chan_dev); > @@ -896,16 +894,10 @@ static bool device_has_all_tx_types(struct dma_device *device) > > static int get_dma_id(struct dma_device *device) > { > - int rc; > - > - do { > - if (!ida_pre_get(&dma_ida, GFP_KERNEL)) > - return -ENOMEM; > - mutex_lock(&dma_list_mutex); > - rc = ida_get_new(&dma_ida, &device->dev_id); > - mutex_unlock(&dma_list_mutex); > - } while (rc == -EAGAIN); > + int rc = ida_alloc(&dma_ida, GFP_KERNEL); > > + if (rc >= 0) > + device->dev_id = rc; > return rc; > } > > @@ -1090,9 +1082,7 @@ int dma_async_device_register(struct dma_device *device) > err_out: > /* if we never registered a channel just release the idr */ > if (atomic_read(idr_ref) == 0) { > - mutex_lock(&dma_list_mutex); > - ida_remove(&dma_ida, device->dev_id); > - mutex_unlock(&dma_list_mutex); > + ida_free(&dma_ida, device->dev_id); > kfree(idr_ref); > return rc; > } > -- > 2.17.1
On Sat, Jun 23, 2018 at 06:00:39PM +0530, Vinod wrote: > On 21-06-18, 14:28, Matthew Wilcox wrote: > > Simpler and shorter code. > > I couldn't find ida_alloc/ida_free in 4.18-rc1 so I assume this will go > thru tree adding this so: > > Acked-by: Vinod Koul <vkoul@kernel.org> Yup, you were bcc'd on patch 3/26 which added the new API. I'll be sending a pull request for this mass conversion, and I'll add your ack. Thanks! -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 06/21/2018 11:28 PM, Matthew Wilcox wrote: > Simpler and shorter code. > > Signed-off-by: Matthew Wilcox <willy@infradead.org> > --- [...]> { > - int rc; > - > - do { > - if (!ida_pre_get(&dma_ida, GFP_KERNEL)) > - return -ENOMEM; > - mutex_lock(&dma_list_mutex); > - rc = ida_get_new(&dma_ida, &device->dev_id); > - mutex_unlock(&dma_list_mutex); > - } while (rc == -EAGAIN); > + int rc = ida_alloc(&dma_ida, GFP_KERNEL); > > + if (rc >= 0) > + device->dev_id = rc; > return rc; This used to return 0 on success, now it returns the ID. That wont work considering that it is used like this rc = get_dma_id(device); if (rc != 0) ... > } > > @@ -1090,9 +1082,7 @@ int dma_async_device_register(struct dma_device *device) > err_out: > /* if we never registered a channel just release the idr */ > if (atomic_read(idr_ref) == 0) { > - mutex_lock(&dma_list_mutex); > - ida_remove(&dma_ida, device->dev_id); > - mutex_unlock(&dma_list_mutex); > + ida_free(&dma_ida, device->dev_id); > kfree(idr_ref); > return rc; > } > -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sun, Jun 24, 2018 at 09:57:45AM +0200, Lars-Peter Clausen wrote: > > + int rc = ida_alloc(&dma_ida, GFP_KERNEL); > > > > + if (rc >= 0) > > + device->dev_id = rc; > > return rc; > > This used to return 0 on success, now it returns the ID. That wont work > considering that it is used like this > > rc = get_dma_id(device); > if (rc != 0) ... Thanks! I changed it to this: static int get_dma_id(struct dma_device *device) { int rc = ida_alloc(&dma_ida, GFP_KERNEL); if (rc < 0) return rc; device->dev_id = rc; return 0; } -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c index 08ba8473a284..1e9bdadfc312 100644 --- a/drivers/dma/dmaengine.c +++ b/drivers/dma/dmaengine.c @@ -161,9 +161,7 @@ static void chan_dev_release(struct device *dev) chan_dev = container_of(dev, typeof(*chan_dev), device); if (atomic_dec_and_test(chan_dev->idr_ref)) { - mutex_lock(&dma_list_mutex); - ida_remove(&dma_ida, chan_dev->dev_id); - mutex_unlock(&dma_list_mutex); + ida_free(&dma_ida, chan_dev->dev_id); kfree(chan_dev->idr_ref); } kfree(chan_dev); @@ -896,16 +894,10 @@ static bool device_has_all_tx_types(struct dma_device *device) static int get_dma_id(struct dma_device *device) { - int rc; - - do { - if (!ida_pre_get(&dma_ida, GFP_KERNEL)) - return -ENOMEM; - mutex_lock(&dma_list_mutex); - rc = ida_get_new(&dma_ida, &device->dev_id); - mutex_unlock(&dma_list_mutex); - } while (rc == -EAGAIN); + int rc = ida_alloc(&dma_ida, GFP_KERNEL); + if (rc >= 0) + device->dev_id = rc; return rc; } @@ -1090,9 +1082,7 @@ int dma_async_device_register(struct dma_device *device) err_out: /* if we never registered a channel just release the idr */ if (atomic_read(idr_ref) == 0) { - mutex_lock(&dma_list_mutex); - ida_remove(&dma_ida, device->dev_id); - mutex_unlock(&dma_list_mutex); + ida_free(&dma_ida, device->dev_id); kfree(idr_ref); return rc; }
Simpler and shorter code. Signed-off-by: Matthew Wilcox <willy@infradead.org> --- drivers/dma/dmaengine.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-)