[U-Boot] [PATCH 1/2] common.h: Introduce DEFINE_CACHE_ALIGN_BUFFER

Tom Rini
2012-07-20T21:50:33Z

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 07/20/2012 02:47 PM, Mike Frysinger wrote:
> On Friday 20 July 2012 07:31:47 Marek Vasut wrote:
>> Dear Mike Frysinger,
>>> On Saturday 07 July 2012 23:08:14 Marek Vasut wrote:
>>>> +/* DEFINE_CACHE_ALIGN_BUFFER() is similar to
>>>> ALLOC_CACHE_ALIGN_BUFFER, but it's purpose is to allow
>>>> allocating aligned buffers outside of function scope. Usage
>>>> of this macro shall be avoided or used with extreme care! */
>>>> +#define DEFINE_CACHE_ALIGN_BUFFER(type, name, size) + static
>>>> char __##name[roundup(size * sizeof(type),
>>>> ARCH_DMA_MINALIGN)] + __aligned(ARCH_DMA_MINALIGN); +
>>>> static type *name = (type *)__##name;
>>>
>>> how is this any different from doing: static __u8 foo[1234]
>>> __aligned(ARCH_DMA_MINALIGN);
>>
>> Does __aligned() align both start of the buffer downwards and end
>> of it upwards ?
>
> it guarantees the start is aligned. i don't believe it does any
> tail padding.
>
> that said, you've added just 1 consumer, but it uses in function
> scope, so i don't see why you had to define a new helper in the
> first place. the existing one would work fine shouldn't it ?

The rough outline of the problems are:
- - We need to have buffers that are multiple of cache size, for clearing.
- - Today we know ehci-hcd had a problem. We also know other drivers /
layers have problems, but they aren't as readily breakable.

That's why we put the macro in <common.h> rather than a USB header.

- --
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBAgAGBQJQCdKoAAoJENk4IS6UOR1WuzUP/0ndUzaq6U2/8X8E7VIhLqAV
AQ+5rmJy5seJAhhvzRLbNgYv7KrLJRayMd4bj4DT8WAmAyUDo1BPvIcKNuQ8Il3M
un3Kjo9+qXusfyvbs1V2wOaXL1pmwcOSQe4n+/8xKlmJ3Jh9v1AIBoXIJQqXPrcL
zhaN0ilxTcLeblFWVzXSOWPAWo4ufJZ1cd43lGXxtjW890GEUCRTNXod9Bpivi2P
ShycGvEcvo80mR7xGKMjZYl9Zf5OQ5QP0Xcvul7X4rjGepEuOsn941wE0zrP1I+s
zXfruOklqWBckiP+aBprX2lzsaBUE33hHZidfPtvuB9rTFk735snaDcrZsL/5K25
17Bczpqqb6RXP1yb/tpc1hWkzpfCZ+eqpg2pN8bIp0P8XZ5apMTvq7L9IMG90lN2
FPwOC2VH9gnOK34Est/iTkp6QnW15r/ZayD9DMBUoxelhx38VJHR8OVyu56QXk2K
10zb6lwKQ3dE8u24ki2TybycVgPVoOq35vUjMw7TWZwiwXSBwgcfHMRukpTSdHA6
wNzw+VsurehKdkqRBeG5tOeOf0tcFrKfg1tfyDQqlBJUn9E6Usj43IXfF23DOQ11
VMcMeizuHP6oTmBk571XrgOKczCaUej1UIrLhnfpXNmFsQ7YsIi9PlQcndFiMBLC
yo+rfRjqLqrPxJdrP5h4
=alD6
-----END PGP SIGNATURE-----