[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1dcf9810-6e9f-c32f-a416-b114d1992ade@arm.com>
Date: Tue, 3 Oct 2017 12:43:07 +0100
From: Robin Murphy <robin.murphy@....com>
To: Christophe LEROY <christophe.leroy@....fr>,
Christoph Hellwig <hch@....de>,
iommu@...ts.linux-foundation.org
Cc: Chris Zankel <chris@...kel.net>, Michal Simek <monstr@...str.eu>,
linux-ia64@...r.kernel.org, linux-mips@...ux-mips.org,
linux-sh@...r.kernel.org, linuxppc-dev@...ts.ozlabs.org,
linux-xtensa@...ux-xtensa.org, x86@...nel.org,
linux-kernel@...r.kernel.org, David Howells <dhowells@...hat.com>,
Max Filippov <jcmvbkbc@...il.com>,
Guan Xuetao <gxt@...c.pku.edu.cn>,
Marek Szyprowski <m.szyprowski@...sung.com>
Subject: Re: [PATCH 07/11] powerpc: make dma_cache_sync a no-op
On 03/10/17 12:24, Christophe LEROY wrote:
>
>
> Le 03/10/2017 à 12:43, Christoph Hellwig a écrit :
>> powerpc does not implement DMA_ATTR_NON_CONSISTENT allocations, so it
>> doesn't make any sense to do any work in dma_cache_sync given that it
>> must be a no-op when dma_alloc_attrs returns coherent memory.
> What about arch/powerpc/mm/dma-noncoherent.c ?
AFAICS, just like the ARM code from which it is derived, that will
always return a non-cacheable remap of the allocation, which should thus
not require explicit maintenance after CPU accesses. dma_cache_sync()
would only matter if dma_alloc_attrs(..., DMA_ATTR_NON_CONSISTENT) got
special treatment and was allowed to return a cacheable address, but PPC
doesn't even propagate the attrs to its internal __dma_alloc_coherent()
implementations.
Robin.
> Powerpc 8xx doesn't have coherent memory.
>
> Christophe
>
>>
>> Signed-off-by: Christoph Hellwig <hch@....de>
>> ---
>> arch/powerpc/include/asm/dma-mapping.h | 2 --
>> 1 file changed, 2 deletions(-)
>>
>> diff --git a/arch/powerpc/include/asm/dma-mapping.h
>> b/arch/powerpc/include/asm/dma-mapping.h
>> index eaece3d3e225..320846442bfb 100644
>> --- a/arch/powerpc/include/asm/dma-mapping.h
>> +++ b/arch/powerpc/include/asm/dma-mapping.h
>> @@ -144,8 +144,6 @@ static inline phys_addr_t dma_to_phys(struct
>> device *dev, dma_addr_t daddr)
>> static inline void dma_cache_sync(struct device *dev, void *vaddr,
>> size_t size,
>> enum dma_data_direction direction)
>> {
>> - BUG_ON(direction == DMA_NONE);
>> - __dma_sync(vaddr, size, (int)direction);
>> }
>> #endif /* __KERNEL__ */
>>
Powered by blists - more mailing lists