lkml.org 
[lkml]   [2016]   [Aug]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH] dmaengine: qcom_hidma: release the descriptor before the callback
    From
    Date
    On 08/05/2016 08:32 AM, Robert Jarzmik wrote:
    > Lars-Peter Clausen <lars@metafoo.de> writes:
    >
    >> On 08/04/2016 06:08 PM, Sinan Kaya wrote:
    >> [...]
    >>> 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.
    >>
    >>> 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

    But that allows you only to report the error for the last descriptor that
    failed. If two or more have failed any but the last will return DMA_COMPLETE
    instead of DMA_ERROR. In your case that sort of works because you completely
    stop execution after a descriptor failed. But as you noted in the commit
    message this will report misleading status values for the descriptors after
    the descriptor that failed.

    I believe we need to invest some effort to come up with clear semantics on
    what is the expected behavior when transferring a descriptor fails.
    Potentially allowing clients to choose the desired behavior, e.g. either
    abort all descriptors on error or continue with the next one.

    \
     
     \ /
      Last update: 2016-08-05 11:21    [W:2.244 / U:0.344 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site