Re: [RESEND/PATCH 5/6] USB: musb-gadget: complete request only ifdata is transfered over

From: Felipe Balbi
Date: Wed Sep 15 2010 - 02:54:22 EST


On Tue, Sep 14, 2010 at 12:51:09PM -0500, Sergei Shtylyov wrote:
Hello.

Felipe Balbi wrote:

If a DMA interrupt comes when the whole transfer is not yet
complete (and
other Ming Lei's patches are making this possible),

Oh, here I mixed some other patch with Ming Lei's ones...

it will pass due to the

than this is the actual problem, no ? If we're using mode1 dma (as we
are on tx path), we should only get dma interrupt when the whole
transfer has been completed.

The Inventra DMA controller has serious DMA length limitation, so the whole
transfer may take more than one DMA.

When I said 'whole transfer' I meant the transfer size you programmed
dma to transfer, see that we have (not actual code):

if (transfer_size > dma->max_len)
transfer_size = dma->max_len;

dma->channel_program(...,..., transfer_size,...);

with mode1, we will only get irq when dma has transferred transfer_size
bytes.

likewise, this was there before the patch. I don't think the real
problem lies with this patch, it's been there for a while, don't you
agree ?

Then what problem this patch fixes, if not this one?

if request->length == 1MB and dma->max_len = 128KB, when is_dma is true,
request->actual will be different from request->length for 7
'iterations', then only on the 8th it will be the same. I believe that's
what Ming is trying to fix.

Ming, am I correct ?

Let me repeat: in the PIO mode the added check is just duplicate, in the DMA

it is duplicate for PIO, but not for DMA.

--
balbi
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/