Re: [PATCH] dmatest: terminate all ongoing transfers beforesubmitting new one

From: Viresh Kumar
Date: Tue Oct 16 2012 - 05:52:17 EST

Hi Andy,

Adding blank lines before and after your replies makes it more readable.

On 16 October 2012 15:05, Andy Shevchenko <andy.shevchenko@xxxxxxxxx> wrote:
> On Tue, Oct 16, 2012 at 11:56 AM, viresh kumar <viresh.kumar@xxxxxxxxxx> 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
transfers for error case would be better, to make them timeout safe.

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at