• Christoph Hellwig's avatar
    dma-mapping: fix page attributes for dma_mmap_* · 33dcb37c
    Christoph Hellwig authored
    All the way back to introducing dma_common_mmap we've defaulted to mark
    the pages as uncached.  But this is wrong for DMA coherent devices.
    Later on DMA_ATTR_WRITE_COMBINE also got incorrect treatment as that
    flag is only treated special on the alloc side for non-coherent devices.
    
    Introduce a new dma_pgprot helper that deals with the check for coherent
    devices so that only the remapping cases ever reach arch_dma_mmap_pgprot
    and we thus ensure no aliasing of page attributes happens, which makes
    the powerpc version of arch_dma_mmap_pgprot obsolete and simplifies the
    remaining ones.
    
    Note that this means arch_dma_mmap_pgprot is a bit misnamed now, but
    we'll phase it out soon.
    
    Fixes: 64ccc9c0 ("common: dma-mapping: add support for generic dma_mmap_* calls")
    Reported-by: default avatarShawn Anastasio <shawn@anastas.io>
    Reported-by: default avatarGavin Li <git@thegavinli.com>
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com> # arm64
    33dcb37c
Kconfig 34.6 KB