From mboxrd@z Thu Jan 1 00:00:00 1970 From: zonque@gmail.com (Daniel Mack) Date: Wed, 21 Aug 2013 14:03:12 +0200 Subject: [PATCH v4 3/4] dma: mmp_pdma: add support for residue reporting In-Reply-To: References: <1376672707-24527-1-git-send-email-zonque@gmail.com> <1376672707-24527-4-git-send-email-zonque@gmail.com> <5214A601.1010607@marvell.com> Message-ID: <5214AC80.2090102@gmail.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Andy, On 21.08.2013 13:52, Andy Shevchenko wrote: > On Wed, Aug 21, 2013 at 2:35 PM, Xiang Wang wrote: >> On 08/17/2013 01:05 AM, Daniel Mack wrote: >>> >>> In order to report the channel's residue, we walk the list of running >>> descriptors, look for those which match the cookie, and then try to find >>> the descriptor which defines upper and lower boundaries that embrace the >>> current transport pointer. >>> >>> Signed-off-by: Daniel Mack > >> One thing I want to check with you and all: >> If we have these descriptors in the running chain: >> D1T1 -> D2T1 -> D3T1 => D1T2 -> D2T2 -> D3T2 >> | Transaction 1 | Transaction 2 | >> >> And DMA currently running to D2T1, if we provide the cookie of D3T2, what >> the residual value we should get? All unfinished bytes in T1+T2 or only >> unfinished bytes in T2 (seems not easy to implement)? > > You have a really good question. Different drivers do different things. I think the idea of how things should work is pretty clear, but I'd like Vinod to ack my understanding here :) The user is free to submit multiple transactions per channel, and dmaengine_submit() will submit a new cookie for each one. When the engine is asked about the residue of a specific cookie, it should of course only return the value for the related transaction. If that transaction is not yet processed, the residue value should be the complete length, regardless of the transaction that is currently processed. > In dw_dmac, for example, we return the T1 (means 'active') residue always. I'd say that's a bug. > I don't think you have different cookies per descriptors in chain of > one transaction. Currently, the pdma driver does in fact assign a cookie to each descriptor, but the external user will only get so see the cookie for the last descriptor in the transaction. I don't think that's a problem, but we have to maintain an understanding of which descriptors belong to one transaction. Thanks, Daniel