Lars-Peter Clausen [off-list ref] writes:
On 08/04/2016 06:08 PM, Sinan Kaya wrote:
[...]
quoted
The other way is I can feed this information to what Dave just introduced
as part of the callback mechanism and not touch this.
Use the callback mechanism. It is a lot easier to implement correctly than
the tx_status() mechanism.
quoted
The main discussion here is that
"tx_status does not indicate whether the final transaction is successful or
not" whether the driver has the capability to determine error or not.
tx_status() is supposed to be able to indicate whether a transfer failed or
not. But in my opinion this feature is broken by design and implementing it
correctly is very difficult without creating memory leaks. Which is probably
why so few drivers actually implement it.
I think you can implement the error reporting by remembering the "last" cookie
where an error occurred such as in :
- e093bf60ca49 ("dmaengine: pxa: handle bus errors")
=> see the part of the commit beginning with "As dma_cookie_status() ..."
The point about error reporting was already discussed with Vinod in here:
https://lkml.org/lkml/2016/4/13/471
=> Vinod and I were seeing the reporting can be improved
Yet the description made by Russell of the DMA API semantics can be implemented
and used to find whether a specific tx failed or not, it's rather the "in
progress" part I find misleading.
Cheers.
--
Robert