From mboxrd@z Thu Jan 1 00:00:00 1970 From: Greentime Hu Subject: Re: [PATCH v6 16/36] nds32: DMA mapping API Date: Tue, 23 Jan 2018 16:23:27 +0800 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Cc: Greentime , Linux Kernel Mailing List , linux-arch , Thomas Gleixner , Jason Cooper , Marc Zyngier , Rob Herring , Networking , Vincent Chen , DTML , Al Viro , David Howells , Will Deacon , Daniel Lezcano , linux-serial@vger.kernel.org, Geert Uytterhoeven , Linus Walleij , Mark Rutland , Greg KH , Guo Ren Return-path: In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org Hi, Arnd: 2018-01-18 18:26 GMT+08:00 Arnd Bergmann : > On Mon, Jan 15, 2018 at 6:53 AM, Greentime Hu wrote: >> From: Greentime Hu >> >> This patch adds support for the DMA mapping API. It uses dma_map_ops for >> flexibility. >> >> Signed-off-by: Vincent Chen >> Signed-off-by: Greentime Hu > > I'm still unhappy about the way the cache flushes are done here as discussed > before. It's not a show-stopped, but no Ack from me. How about this implementation? static void nds32_dma_sync_single_for_cpu(struct device *dev, dma_addr_t handle, size_t size, enum dma_data_direction dir) { switch (direction) { case DMA_TO_DEVICE: /* writeback only */ break; case DMA_FROM_DEVICE: /* invalidate only */ case DMA_BIDIRECTIONAL: /* writeback and invalidate */ cpu_dma_inval_range(start, end); break; default: BUG(); } } static void nds32_dma_sync_single_for_device(struct device *dev, dma_addr_t handle, size_t size, enum dma_data_direction dir) { switch (direction) { case DMA_FROM_DEVICE: /* invalidate only */ break; case DMA_TO_DEVICE: /* writeback only */ case DMA_BIDIRECTIONAL: /* writeback and invalidate */ cpu_dma_wb_range(start, end); break; default: BUG(); } }