• Robert Jarzmik's avatar
    dmaengine: pxa_dma: fix hotchain corner case · 76507fdf
    Robert Jarzmik authored
    In the case where a descriptor is chained on a running channel, and as
    explained in the comment in the code 10 lines above, the success of the
    chaining is ensured either if :
     - the DMA is still running
     - or if the chained transfer is completed
    
    Unfortunately the transfer completness test was done on the descriptor
    to which the transfer was chained, and not the transfer being chained at
    the end, ie. hot-chained.
    
    This corner case is extremely hard to trigger, as usually the DMA chain
    is still running, and the first case takes care of returning success of
    the hot-chaining. It was seen by hot-chaining several "small transfers"
    to a running "big transfer", not in a real-life usecase but by testing
    the robustness of the driver.
    Signed-off-by: default avatarRobert Jarzmik <robert.jarzmik@free.fr>
    Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
    76507fdf
pxa_dma.c 41.3 KB