A descrptor of status BUSY could stay in pending list with non-zero number of transferred count. In this case we should query the actual transfered count or the total residual will be wrong and cause unexpected hw_ptr move. Signed-off-by: Hsin-Yu Chao <hychao@xxxxxxxxxxxx> --- drivers/dma/pl330.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c index 4fc3ffb..39230d9 100644 --- a/drivers/dma/pl330.c +++ b/drivers/dma/pl330.c @@ -2295,7 +2295,7 @@ pl330_tx_status(struct dma_chan *chan, dma_cookie_t cookie, list_for_each_entry(desc, &pch->work_list, node) { if (desc->status == DONE) transferred = desc->bytes_requested; - else if (running && desc == running) + else if ((running && desc == running) || (desc->status == BUSY)) transferred = pl330_get_current_xferred_count(pch, desc); else -- 2.6.6 -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html