Re: [PATCH] dmaengine: fix balance of privatecnt inc/dec operations
On Fri, Aug 07, 2015 at 12:26:47PM +0200, Robert Baldyga wrote: > This patch increments privatecnt value and set DMA_PRIVATE in device > caps in dma_request_slave_channel() function. This is needed to keep > privatecnt increment/decrement balance. > > As function dma_release_channel() decrements privatecnt counter, we need > to increment it when channel is requested. Otherwise privatecnt drops > into negatives after few dma_release_channel() calls. Applied, thanks -- ~Vinod -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] dmaengine: fix balance of privatecnt inc/dec operations
On 07.08.2015 19:26, Robert Baldyga wrote: > This patch increments privatecnt value and set DMA_PRIVATE in device > caps in dma_request_slave_channel() function. This is needed to keep > privatecnt increment/decrement balance. > > As function dma_release_channel() decrements privatecnt counter, we need > to increment it when channel is requested. Otherwise privatecnt drops > into negatives after few dma_release_channel() calls. > > Reported-by: Krzysztof Kozlowski > Signed-off-by: Robert Baldyga > --- > drivers/dma/dmaengine.c | 4 > 1 file changed, 4 insertions(+) Fixes issue [0] (reported after applying [1]). Tested on Trats2 board (Exynos4412, pl330, serial with DMA) Best regards, Krzysztof [0] http://www.spinics.net/lists/linux-serial/msg18369.html [1] http://www.spinics.net/lists/linux-samsung-soc/msg45700.html > > diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c > index 4a4cce1..3ff284c 100644 > --- a/drivers/dma/dmaengine.c > +++ b/drivers/dma/dmaengine.c > @@ -689,6 +689,10 @@ struct dma_chan *dma_request_slave_channel(struct device > *dev, > struct dma_chan *ch = dma_request_slave_channel_reason(dev, name); > if (IS_ERR(ch)) > return NULL; > + > + dma_cap_set(DMA_PRIVATE, ch->device->cap_mask); > + ch->device->privatecnt++; > + > return ch; > } > EXPORT_SYMBOL_GPL(dma_request_slave_channel); > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] dmaengine: fix balance of privatecnt inc/dec operations
This patch increments privatecnt value and set DMA_PRIVATE in device caps in dma_request_slave_channel() function. This is needed to keep privatecnt increment/decrement balance. As function dma_release_channel() decrements privatecnt counter, we need to increment it when channel is requested. Otherwise privatecnt drops into negatives after few dma_release_channel() calls. Reported-by: Krzysztof Kozlowski Signed-off-by: Robert Baldyga --- drivers/dma/dmaengine.c | 4 1 file changed, 4 insertions(+) diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c index 4a4cce1..3ff284c 100644 --- a/drivers/dma/dmaengine.c +++ b/drivers/dma/dmaengine.c @@ -689,6 +689,10 @@ struct dma_chan *dma_request_slave_channel(struct device *dev, struct dma_chan *ch = dma_request_slave_channel_reason(dev, name); if (IS_ERR(ch)) return NULL; + + dma_cap_set(DMA_PRIVATE, ch->device->cap_mask); + ch->device->privatecnt++; + return ch; } EXPORT_SYMBOL_GPL(dma_request_slave_channel); -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/