[U-Boot] [PATCH] nios2: convert cache flush to use dm cpu data

Thomas Chou
2015-10-11T00:38:35Z

Hi Marek,

On 10/11/2015 02:18 AM, Marek Vasut wrote:
> Then you'd also need means to allocate variables to aligned memory location
> to prevent invalid cache flush. (Linux does this with it's DMA API). We are
> much simpler and thus this abstraction is still not available. I wonder if
> the overhead of DMA API would be high or not for U-Boot.

I see most people use memalign(ARCH_DMA_MINALIGN, len) in u-boot to
allocate DMA buffers so that they are cache aligned.

> It is even worse if the cache flush operators permit incorrect cache flushes
> or invalidations. Like I mentioned before, this can lead to hard to debug
> problems when using DMA (at least on ARM).

I would suggest debug check should be left as for debug only. The
definition of common functions should be kept as it is more important
than coding style.

I debugged DMA issues a lot in the past until I realized the importance
of aligned buffers. So there should be a developer's guideline.

But it is even much more difficult when something you believed does not
work as expected, what is taken as common sense. It will trap a lot of
developers when they called your flush cache functions but was skipped
just because, eg, the end of packets are not aligned which is usually
the case.

I would suggest that, with the best of my knowledge, please change the
range check to a debug probe, and restore the cache flush functions to
the common definition.

Best regards,
Thomas