There is no function available to invalidate all the Memory module virt-phys
translations.
If your app structure allows it, you can call
Memory_registerContigBuf(bigCMEMBufferVirtAddr, 258048,
CMEM_getPhys(bigCMEMBufferVirtAddr));
once, and all smaller subdivided buffers will be covered by this one
registration (or, even simpler, just call
Memory_getBufferPhysicalAddress(bigCMEMBufferVirtAddr, 258048, NULL);
and ignore the result, which will do the CMEM_getPhys() for you and register
it). You can then call Memory_unregisterContigBuf(bigCMEMBufferVirtAddr,
258048) once when you're ready to free the CMEM buffer. FYI, if you want to
double-check me, you can call Memory_dumpKnownContigBufsList() to display
(through GT tracing) the contig buffer list (AKA, the Memory module virt-phys
translation table).
Regards,
- Rob
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]
> ] On Behalf Of Erez Kinarti
> Sent: Monday, January 04, 2010 9:15 AM
> To: Vladimir Pantelic; [email protected]
> Subject: RE: Cmem address translation when working with Codec Engine
>
> Thank you Vladimir,
> But we are not able to allocate and free via CodecEngine due
> to the structure of our application and the need to call the
> alloc not before calling CERuntimeInit().
>
>
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]
> ] On Behalf Of Vladimir Pantelic
> Sent: Monday, January 04, 2010 7:09 PM
> To: [email protected]
> Subject: Re: Cmem address translation when working with Codec Engine
>
> Erez Kinarti wrote:
> > Thanks a lot Rob.
> >
> > calling this function for each of the pointers used with
> CodecEngine
> > solved the problem.
> >
> > However, we need something else, some function that invalidates all
> this
> > virt->phy table and not each of the virtual pointers separately.
> >
> > Is there a way to do a full invalidate in a single call
> without keep
> > tracking on each of the virtual pointers?
> >
> > The reason that Memory_unregisterContigBuf it is not enough for us:
> >
> > In our system, we allocate a very big buffer from CMEM
> (258048 bytes),
> > but we don't call CodecEngine with a pointer to the big buffer.
>
> You dont need to call Memory_unregisterContigBuf, just alloc
> and free the buffers via CE and CE will know that you are
> calling it with a smaller buffer inside a larger one that it
> knows the translation to...
>
> _______________________________________________
> Davinci-linux-open-source mailing list
> [email protected]
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
>
> _______________________________________________
> Davinci-linux-open-source mailing list
> [email protected]
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
>
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source