[PATCH] DMA: extend documentation to provide more API details
Guennadi Liakhovetski
g.liakhovetski at gmx.de
Mon Oct 7 16:55:56 EDT 2013
On Mon, 7 Oct 2013, Vinod Koul wrote:
> On Mon, Oct 07, 2013 at 05:45:22PM +0200, Guennadi Liakhovetski wrote:
> > On Mon, 7 Oct 2013, Vinod Koul wrote:
> >
> > > On Mon, Oct 07, 2013 at 05:28:37PM +0200, Guennadi Liakhovetski wrote:
> > > > > > > > > No, not something in the middle. I was thinking about
> > > > > > > > >
> > > > > > > > > (1) cookie 1-3 are submitted
> > > > > > > > > (2) cookie 1 succeeds
> > > > > > > > > (3) a DMA error occurs, cookies 2-3 are discarded
> > > > > > > discarded using terminate_all right?
> > > > > >
> > > > > > No, by the dmaengine driver as a part of the error processing.
> > > > > And how will that be done...?
> > > >
> > > > Sorry, I meant - DMA descriptors with cookies #2 and #3 will be cancelled
> > > > and recycled by the dmaengine driver. That's what you have to do, when
> > > > processing DMA error IRQ.
> > > Well how do you that?
> >
> > Mmmh, maybe I'm missing something, but isn't it a part of the common DMA
> > processing? You get an error IRQ; on some DMAC types this means, that you
> > have to reset the hardware, so, you perform whatever actions you have to
> > do to reset the controller; you remove any descriptors from the pending
> > queue; reinsert them into the free queue and let any clients run on a
> > timeout. I don't think it would be a good idea to do anything more smart
> > like trying to restart the current transfer or drop it and continue with
> > the queue, because we don't know in what state the client hardware is, so,
> > we can only let the client driver try to recover.
> No that would be very wrong thing to do behind clients back. Suppose you got a
> trasaction which returned error irq and it was generated one half of the
> requested transfer was done. Redoing the entrie transaction wont be right!
>
> So I think you need to let client know the error status.
>
> But again, is this usage fiarly common?
Hm, I think, the question is different: is this possible and realistic? If
there's just one DMAC and one platform, I think, there should be a way to
support it? There are controllers, that actually have separate error IRQ
outputs and special status bits for them. Actually, see commit
commit 47a4dc26eeb89a3746f9b1e2092602b40469640a
Author: Guennadi Liakhovetski <g.liakhovetski at gmx.de>
Date: Thu Feb 11 16:50:05 2010 +0000
dmaengine: shdma: fix DMA error handling.
Which means, there are indeed real life situations when such error IRQs
trigger.
Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
More information about the linux-arm-kernel
mailing list