Re: [RESEND2 PATCH 0/3] Fix kernel panic in dma-coherent

From: Mark Rutland
Date: Mon Feb 08 2016 - 12:51:28 EST


On Mon, Feb 08, 2016 at 05:30:49PM +0000, Brian Starkey wrote:
> Hi,
>
> I'm resending these again to try and garner some interest. Without
> this series, dma-coherent cannot be used on arm64 platforms.

I think you need to characterize that a bit better. I see plenty of
instances of 'dma-coherent' in dts files, assuming you mean the DT
dma-coehrent property.

If not, feel free to stop reading now.

Currently dma-coherent isn't well-defined, but it's de-facto semantics
are that a device makes accesses which are coherent with data accesses
made by CPUs with Normal, Inner Shareable, Inner Write-Back Cacheable,
Outer Write-Back Cacheable attributes.

> The decision to add MEMREMAP_WC came out of a previous discussion with
> Dan Williams and Catalin Marinas about the same problem[1].

As pgprot_writecombine is Normal Non-Cacheable, this is a completely
different idea of coherency to that described by the DT dma-coherent
property.

We should not overload that to mean different things.

Thanks,
Mark.

> These patches implement a MEMREMAP_WC flag for memremap(), which can
> be used to obtain writecombine mappings. This is then used for setting
> up dma_coherent_mem regions which use the DMA_MEMORY_MAP flag.
> They apply cleanly on 4.5-rc3.
>
> Patch 3 makes sure that the appropriate memset function is used
> when zeroing coherent allocations, which fixes an alignment fault on
> arm64.
>
> Best Regards,
> Brian
>
> [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-December/390857.html
>
> Brian Starkey (3):
> memremap: add MEMREMAP_WC flag
> drivers: dma-coherent: use MEMREMAP_WC for DMA_MEMORY_MAP
> drivers: dma-coherent: use memset_io for DMA_MEMORY_IO
>
> drivers/base/dma-coherent.c | 25 ++++++++++++++++++++-----
> include/linux/io.h | 1 +
> kernel/memremap.c | 15 +++++++++++++--
> 3 files changed, 34 insertions(+), 7 deletions(-)
>
> --
> 1.7.9.5
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>