Hi Andy, Adding blank lines before and after your replies makes it more readable.
On 16 October 2012 15:05, Andy Shevchenko <andy.shevche...@gmail.com> wrote: > On Tue, Oct 16, 2012 at 11:56 AM, viresh kumar <viresh.ku...@linaro.org> > wrote: >> Can you try with a large timeout value for the module. > I tried and the failures were gone. Ok. So there is no problem with s/w emulation. Good. :) >> We must get to the root cause of these failures. There may be something more >> serious which is getting hidden due to this call to terminate(). > My understanding is that. The software LLP emulation runs several > transactions per active descriptor. Because of a huge load of the > CPU/DMA some transactions are not done within given timeout. The > dmatest supplies next block to transfer without doing anything for > previous one. Under some circumstances the new transfer is queued, and > immediately after this the callback function is called for _previous_ > transfer. The check condition doesn't recognize which transfer called > the callback function. > > Rough solution is proposed by current patch. Another solution is to > mark each transfer with id and check done flag and transfer id > together. >> Also, the proposed solution might hide some other important errors. We may >> need >> to terminate transfers when we found that an error is there in last >> transfers: > I think it could be better than first solution, but what do you think > about marking each transfer with corresponding id? But dma_test expects the transfer to finish within timeout. If it doesn't, then that's an error. So, for testing your s/w emulation, you must pass higher timeout. And terminating transfers for error case would be better, to make them timeout safe. -- viresh -- 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/