[U-Boot] [PATCH] mmc:dcache: Cache line size aligned internal MMC buffers

Anton Staaf
2011-08-23T20:27:26Z

On Tue, Aug 23, 2011 at 1:12 PM, Wolfgang Denk <wd@denx.de> wrote:
> Dear Anton Staaf,
>
> In message <CAF6FioXeFQP2a0VaZOVOTmxPvJxF4=kamS18=2=p6TFNefwUuA@mail.gmail.com> you wrote:
>>
>> > what about adding a new func like:
>> > #define dma_buffer_alloca(size)
>>
>> I generally avoid large allocations on the stack, they can confuse
>> virtual stack management and blow out small embedded stacks. ?But
>> neither of these are really a problem for most U-Boot targets. ?Are
>> you thinking something like:
>>
>> #define dma_buffer_alloca(size) alloca(size + get_dcache_line_size() -
>> 1) & ~(get_dcache_line_size() - 1);
>
> I don't think I will accept any alloca() based code into mainline.

Ahh, that must have been my reason for not using it in the first
place, a premonition. :)

So then, to guide our efforts, what is a more suitable solution?
Would you prefer we stick with the existing path of calling memalign
and passing it the cache size by directly calling
get_dcache_line_size? Or would you prefer something more like a
dma_buffer_malloc function that allocates on the heap a cache line
size aligned buffer and returns it?

Hmm, that will require a bit of thought because we need to recover the
original pointer returned by malloc to cleanly free the buffer later.

Thanks,
Anton

> Best regards,
>
> Wolfgang Denk
>
> --
> DENX Software Engineering GmbH, ? ? MD: Wolfgang Denk & Detlev Zundel
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
> "There are three principal ways to lose money: wine, women, ?and ?en-
> gineers. ?While ?the first two are more pleasant, the third is by far
> the more certain." ? ? ? ? ? ? ? ? ? ? ?-- Baron Rothschild, ca. 1800
>