[U-Boot] [PATCH] dm: core: Round up size when allocating so that it is cache line aligned

The size variable may not be always be a mulitple of ARCH_DMA_MINALIGN and using it to flush cache leads to cache misaligned warnings.
Therefore, round up the size to a multiple of ARCH_DMA_MINLAIGN when allocating private data.
Signed-off-by: Faiz Abbas faiz_abbas@ti.com --- drivers/core/device.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/drivers/core/device.c b/drivers/core/device.c index 5463d1f..96dfb21 100644 --- a/drivers/core/device.c +++ b/drivers/core/device.c @@ -254,6 +254,7 @@ static void *alloc_priv(int size, uint flags) void *priv;
if (flags & DM_FLAG_ALLOC_PRIV_DMA) { + size = ROUND(size, ARCH_DMA_MINALIGN); priv = memalign(ARCH_DMA_MINALIGN, size); if (priv) { memset(priv, '\0', size);

Hi Faiz,
On Tue, Sep 19, 2017 at 7:23 PM, Faiz Abbas faiz_abbas@ti.com wrote:
The size variable may not be always be a mulitple of ARCH_DMA_MINALIGN and using it to flush cache leads to cache misaligned warnings.
Therefore, round up the size to a multiple of ARCH_DMA_MINLAIGN when allocating private data.
Signed-off-by: Faiz Abbas faiz_abbas@ti.com
drivers/core/device.c | 1 + 1 file changed, 1 insertion(+)
Isn't DM_FLAG_ALLOC_PRIV_DMA sufficient?
Regards, Bin

Hi Bin,
On Tuesday 19 September 2017 05:42 PM, Bin Meng wrote:
Hi Faiz,
On Tue, Sep 19, 2017 at 7:23 PM, Faiz Abbas faiz_abbas@ti.com wrote:
The size variable may not be always be a mulitple of ARCH_DMA_MINALIGN and using it to flush cache leads to cache misaligned warnings.
Therefore, round up the size to a multiple of ARCH_DMA_MINLAIGN when allocating private data.
Signed-off-by: Faiz Abbas faiz_abbas@ti.com
drivers/core/device.c | 1 + 1 file changed, 1 insertion(+)
Isn't DM_FLAG_ALLOC_PRIV_DMA sufficient?
The check_cache_range function checks both the beginning and the end of the range given to it for cache alignment. DM_FLAG_ALLOC_PRIV_DMA aligns only the base address but the end address decided by size need not be at a multiple of ARCH_DMA_MINALIGN.
Thanks, Faiz

On 19 September 2017 at 05:23, Faiz Abbas faiz_abbas@ti.com wrote:
The size variable may not be always be a mulitple of ARCH_DMA_MINALIGN and using it to flush cache leads to cache misaligned warnings.
Therefore, round up the size to a multiple of ARCH_DMA_MINLAIGN when allocating private data.
Signed-off-by: Faiz Abbas faiz_abbas@ti.com
drivers/core/device.c | 1 + 1 file changed, 1 insertion(+)
Reviewed-by: Simon Glass sjg@chromium.org

On 19 September 2017 at 05:23, Faiz Abbas faiz_abbas@ti.com wrote:
The size variable may not be always be a mulitple of ARCH_DMA_MINALIGN and using it to flush cache leads to cache misaligned warnings.
Therefore, round up the size to a multiple of ARCH_DMA_MINLAIGN when allocating private data.
Signed-off-by: Faiz Abbas faiz_abbas@ti.com
drivers/core/device.c | 1 + 1 file changed, 1 insertion(+)
Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot-dm thanks!
participants (4)
-
Bin Meng
-
Faiz Abbas
-
Simon Glass
-
sjg@google.com