Hi Russell, On Fri, Aug 1, 2014 at 4:30 PM, Russell King - ARM Linux <linux@xxxxxxxxxxxxxxxx> wrote: > On Fri, Aug 01, 2014 at 10:51:26AM +0200, Laurent Pinchart wrote: >> I'll take this opportunity to question why we have a separation between >> tx_submit and issue_pending. What's the rationale for that, especially given >> that dma_issue_pending_all() might kick in at any point and issue pending >> transfers for all devices. A driver could thus see its submitted but not >> issued transactions being issued before it explicitly calls >> dma_async_issue_pending(). > > A prepared but not submitted transaction is not a pending transaction. > > The split is necessary so that a callback can be attached to the > transaction. This partially comes from the async-tx API, and also > gets a lot of use with the slave API. > > The prepare function allocates the descriptor and does the initial > setup, but does not mark the descriptor as a pending transaction. > It returns the descriptor, and the caller is then free to add a > callback function and data pointer to the descriptor before finally > submitting it. This sequence must occur in a timely manner as some > DMA engine implementations hold a lock between the prepare and submit > callbacks (Dan explicitly permits this as part of the API.) I think you misunderstood the question: Laurent asked about dmaengine_submit() (step 2) and dma_async_issue_pending() (step 3), while your answer is about dmaengine_prep_slave_*() (step 1) and dmaengine_submit() (step 2). Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html