On Mon, May 17, 2010 at 2:15 AM, Felipe Contreras
<felipe.contre...@gmail.com> wrote:
> Hi Ohad,
>
> On Mon, May 17, 2010 at 1:35 AM, Ohad Ben-Cohen <o...@wizery.com> wrote:
>> On Fri, May 14, 2010 at 10:27 PM, Felipe Contreras
>> <felipe.contre...@gmail.com> wrote:
>>> I looked into the dma code (I guess it's in arch/arm/mm/dma-mapping.c)
>>> and I don't understand what dma_unmap_sg is supposed to do.
>>
>> Portable code must use the dma_unmap_* APIs.
>>
>> As you mentioned, one of the things it's crucial for
>> (but not used in our case) is bounce buffers:
>> e.g. when doing a DMA from a device using a buffer
>> that is out of the platform's DMA reach,
>> the DMA API uses bounce buffers: data DMA'ed to that
>> bounce buffer, and then the dma unmap copies it back
>> to the original buffer).
>
> Yes, but in dspbridge the most important use-case is video
> encoding/decoding, so we definitely don't want bouncing buffers.
> Besides, from what I can see very few platforms need them.

Sure.
I just mentioned that as one reason why portable code
that does DMA must use the unmap API.

>
>> Another thing unmap is taking care of is speculative prefetch:
>> modern ARM processors can access the buffer during DMA
>> in order to speculatively prefetch data into the cache. Naturally
>> this can seriously break a DMA from a device, so unmap is
>> invalidating the caches to prevent this.
>>
>> The current dspbridge cache API is mostly relying on the
>> application to do the right thing: application programmer should
>> decide when to clean, flush or invalidate the caches in order
>> to have a successful DMA operation.
>>
>> This is prone to mistakes, it's not portable, and of course
>> not upstreamable.
>>
>> Using the standard DMA API we take the freedom from the
>> application programmer - we just ask him/her to tell us before
>> a DMA operation begins, and after it ends. The DMA API
>> is then responsible to do the right thing.
>
> It is a higher level of abstraction, but the application still needs
> to do the right thing, and errors can still happen. Anyway, I see now
> the changes 2.6.34.
> can
>> I read at your latest posts that after rebasing to newest dspbridge
>> code the issue doesn't reproduce anymore ? Please tell me if it's back.
>
> Yes... I haven't tried in the old commit you started from + the patch
> Omar suggested, but I guess there's no need for that any more. I can
> play with this code now :)
>
> --
> Felipe Contreras
>
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to