Message ID | 1505820230-30199-1-git-send-email-faiz_abbas@ti.com |
---|---|
State | Accepted |
Commit | 5924da1dfe56d32a45b8adf29bdc8caf788bd4c8 |
Delegated to: | Simon Glass |
Headers | show |
Series | [U-Boot] dm: core: Round up size when allocating so that it is cache line aligned | expand |
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!
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);
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(+)