summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSricharan R <sricharan@codeaurora.org>2019-06-28 17:39:46 +0530
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-07-10 09:53:48 +0200
commit018c968de710af1372d456ededc0a575ee038b92 (patch)
tree49f5d78b79de50b808dc6ab10fc2b13663bc7a0e
parent870de149950551a3f9735f359b6440e69ab7ccf9 (diff)
downloadlinux-stable-018c968de710af1372d456ededc0a575ee038b92.tar.gz
linux-stable-018c968de710af1372d456ededc0a575ee038b92.tar.bz2
linux-stable-018c968de710af1372d456ededc0a575ee038b92.zip
dmaengine: qcom: bam_dma: Fix completed descriptors count
commit f6034225442c4a87906d36e975fd9e99a8f95487 upstream. One space is left unused in circular FIFO to differentiate 'full' and 'empty' cases. So take that in to account while counting for the descriptors completed. Fixes the issue reported here, https://lkml.org/lkml/2019/6/18/669 Cc: stable@vger.kernel.org Reported-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Signed-off-by: Sricharan R <sricharan@codeaurora.org> Tested-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Signed-off-by: Vinod Koul <vkoul@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/dma/qcom/bam_dma.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/dma/qcom/bam_dma.c b/drivers/dma/qcom/bam_dma.c
index 1617715aa6e0..489c8fa4d2e2 100644
--- a/drivers/dma/qcom/bam_dma.c
+++ b/drivers/dma/qcom/bam_dma.c
@@ -808,6 +808,9 @@ static u32 process_channel_irqs(struct bam_device *bdev)
/* Number of bytes available to read */
avail = CIRC_CNT(offset, bchan->head, MAX_DESCRIPTORS + 1);
+ if (offset < bchan->head)
+ avail--;
+
list_for_each_entry_safe(async_desc, tmp,
&bchan->desc_list, desc_node) {
/* Not enough data to read */