Messages in this thread | | | Date | Fri, 28 Feb 2014 11:23:41 +0530 | From | George Cherian <> | Subject | Re: [PATCH 1/2] dma: cppi41: start tear down only if channel is busy |
| |
On 2/27/2014 2:17 PM, Shevchenko, Andriy wrote: > On Thu, 2014-02-27 at 10:44 +0530, George Cherian wrote: >> Start the channel tear down only if the channel is busy, else just >> bail out. In some cases its seen that by the time the tear down is >> initiated the cppi completes the DMA, especially in ISOCH transfers. >> >> Signed-off-by: George Cherian <george.cherian@ti.com> >> --- >> drivers/dma/cppi41.c | 7 +++++-- >> 1 file changed, 5 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/dma/cppi41.c b/drivers/dma/cppi41.c >> index c18aebf..d028f36 100644 >> --- a/drivers/dma/cppi41.c >> +++ b/drivers/dma/cppi41.c >> @@ -620,12 +620,15 @@ static int cppi41_stop_chan(struct dma_chan *chan) >> u32 desc_phys; >> int ret; >> >> + desc_phys = lower_32_bits(c->desc_phys); >> + desc_num = (desc_phys - cdd->descs_phys) / sizeof(struct cppi41_desc); >> + if (!cdd->chan_busy[desc_num]) >> + return 0; >> + >> ret = cppi41_tear_down_chan(c); >> if (ret) >> return ret; >> >> - desc_phys = lower_32_bits(c->desc_phys); >> - desc_num = (desc_phys - cdd->descs_phys) / sizeof(struct cppi41_desc); >> WARN_ON(!cdd->chan_busy[desc_num]); > Do you still need this WARN_ON?
Yes in some cases wherein the channel is busy and tear down didn't happen successfully. > >> cdd->chan_busy[desc_num] = NULL; >> >
-- -George
| |