On Thu, Jul 21, 2016 at 12:33:12PM +0300, Peter Ujfalusi wrote: > On 07/20/16 09:26, Robert Jarzmik wrote: > > Speaking of which, from a purely design point of view, as long as you think > > beforehand what is your sequence, ie. what is the sequence of your link > > chaining, completion handling, etc ..., both marking before or after next tx > > start should be fine IMHO. > > Yes, it might be a bit better from performance point of view if we first start > the pending descriptor (if there is one) then do the vchan_cookie_complete(). > On the other hand if we care more about latency and accuracy we should > complete the transfer first then look for pending descriptors. But since > virt_dma is using a tasklet for the real completion, the latency is always > going to be when the tasklet is given the chance to execute. I think this shows a slight misunderstanding of the DMA engine API. The DMA completion is defined by the API to always happen in tasklet context, which is why the virt-dma stuff does it that way - and all other DMA engine drivers. It's one of the fundamentals of the API. As it happens in tasklet context, tasklets can be scheduled to run with variable latency, so any use of the DMA engine API which has a predictable latency around the completion handling is going to be unreliable. Remember also that with circular buffers, there's no guarantee of getting period-based completion callbacks - several periods can complete and you are only guaranteed to get one completion callback. So, the idea that completion callbacks can have anything to do with low latency or accuracy is totally incorrect. -- RMK's Patch system: http://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up according to speedtest.net. -- 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