On Wednesday, August 24, 2011 13:27:05 Anton Staaf wrote:
> On Wed, Aug 24, 2011 at 6:25 AM, Wolfgang Denk wrote:
> > Lukasz Majewski wrote:
> >> 4. get_dcache_line_size() can be simply defined as
> >> #define get_dcache_line_size() CONFIG_SYS_CACHE_LINE_SIZE if we
> >> _really_ want to save a few bytes.
> > 
> > Actually I fail to understand why we would ever need
> > get_dcache_line_size() in a boot loader.
> 
> It is required so that we can correctly allocate buffers that will be
> used by DMA engines to read or write data.  The reason that these
> buffers need to be cache line size aligned is because unaligned cache
> invalidates are not possible to do in a safe way.  The problem is that
> invalidating a partial cache line requires invalidating the entire
> line.  And the other part of the line can contain nearby variables
> (especially if the buffer is stack allocated), so we have to first
> flush the cache line to be safe.  However, that flush will clobber the
> values that the DMA engine wrote to main memory that are not reflected
> in the cache.

right, and that's why i want to "hide" it be hind a "dma buffer allocate" API 
so that people can just say "i want a dma safe buffer" rather than having to 
delve into these details.  they'll inevitable get confused and screw it up. ;)
-mike

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to