From: Christoph Hellwig <hch-jcswGhMUV9g@public.gmane.org> To: iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Cc: linux-arch-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-xtensa-PjhNF2WwrV/0Sa2dR60CXw@public.gmane.org, Michal Simek <monstr-pSz03upnqPeHXe+LvDLADg@public.gmane.org>, Vincent Chen <deanbo422-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>, linux-c6x-dev-jPsnJVOj+W6hPH1hqNUYSQ@public.gmane.org, linux-parisc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-sh-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-hexagon-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-m68k-cunTk1MwBs8S/qaLPR03pWD2FQJk+8+b@public.gmane.org, openrisc-cunTk1MwBs9a3B2Vnqf2dGD2FQJk+8+b@public.gmane.org, Greentime Hu <green.hu-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>, linux-alpha-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, sparclinux-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, nios2-dev-g9ZBwUv/Ih/yUk5EbOjzuce+I+R0W71w@public.gmane.org, linux-snps-arc-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org Subject: [PATCH 15/20] sh: use dma_direct_ops for the CONFIG_DMA_COHERENT case Date: Fri, 11 May 2018 09:59:40 +0200 [thread overview] Message-ID: <20180511075945.16548-16-hch@lst.de> (raw) In-Reply-To: <20180511075945.16548-1-hch-jcswGhMUV9g@public.gmane.org> This is a slight change in behavior as we avoid the detour through the virtual mapping for the coherent allocator, but if this CPU really is coherent that should be the right thing to do. Signed-off-by: Christoph Hellwig <hch-jcswGhMUV9g@public.gmane.org> --- arch/sh/Kconfig | 1 + arch/sh/include/asm/dma-mapping.h | 4 ++++ arch/sh/kernel/Makefile | 4 ++-- arch/sh/kernel/dma-nommu.c | 4 ---- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 7d521926041e..d0b095323d62 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -157,6 +157,7 @@ config SWAP_IO_SPACE bool config DMA_COHERENT + select DMA_DIRECT_OPS bool config DMA_NONCOHERENT diff --git a/arch/sh/include/asm/dma-mapping.h b/arch/sh/include/asm/dma-mapping.h index 149e71f95be7..1ebc6a4eb1c5 100644 --- a/arch/sh/include/asm/dma-mapping.h +++ b/arch/sh/include/asm/dma-mapping.h @@ -6,7 +6,11 @@ extern const struct dma_map_ops nommu_dma_ops; static inline const struct dma_map_ops *get_arch_dma_ops(struct bus_type *bus) { +#ifdef CONFIG_DMA_NONCOHERENT return &nommu_dma_ops; +#else + return &dma_direct_ops; +#endif } extern void *dma_generic_alloc_coherent(struct device *dev, size_t size, diff --git a/arch/sh/kernel/Makefile b/arch/sh/kernel/Makefile index dc80041f7363..cb5f1bfb52de 100644 --- a/arch/sh/kernel/Makefile +++ b/arch/sh/kernel/Makefile @@ -12,7 +12,7 @@ endif CFLAGS_REMOVE_return_address.o = -pg -obj-y := debugtraps.o dma-nommu.o dumpstack.o \ +obj-y := debugtraps.o dumpstack.o \ idle.o io.o irq.o irq_$(BITS).o kdebugfs.o \ machvec.o nmi_debug.o process.o \ process_$(BITS).o ptrace.o ptrace_$(BITS).o \ @@ -45,7 +45,7 @@ obj-$(CONFIG_DUMP_CODE) += disassemble.o obj-$(CONFIG_HIBERNATION) += swsusp.o obj-$(CONFIG_DWARF_UNWINDER) += dwarf.o obj-$(CONFIG_PERF_EVENTS) += perf_event.o perf_callchain.o - +obj-$(CONFIG_DMA_NONCOHERENT) += dma-nommu.o obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o ccflags-y := -Werror diff --git a/arch/sh/kernel/dma-nommu.c b/arch/sh/kernel/dma-nommu.c index 79a9edafa5b0..d8689b1cb743 100644 --- a/arch/sh/kernel/dma-nommu.c +++ b/arch/sh/kernel/dma-nommu.c @@ -51,7 +51,6 @@ static int nommu_map_sg(struct device *dev, struct scatterlist *sg, return nents; } -#ifdef CONFIG_DMA_NONCOHERENT static void nommu_sync_single_for_device(struct device *dev, dma_addr_t addr, size_t size, enum dma_data_direction dir) { @@ -67,16 +66,13 @@ static void nommu_sync_sg_for_device(struct device *dev, struct scatterlist *sg, for_each_sg(sg, s, nelems, i) sh_sync_dma_for_device(sg_virt(s), s->length, dir); } -#endif const struct dma_map_ops nommu_dma_ops = { .alloc = dma_generic_alloc_coherent, .free = dma_generic_free_coherent, .map_page = nommu_map_page, .map_sg = nommu_map_sg, -#ifdef CONFIG_DMA_NONCOHERENT .sync_single_for_device = nommu_sync_single_for_device, .sync_sg_for_device = nommu_sync_sg_for_device, -#endif }; EXPORT_SYMBOL(nommu_dma_ops); -- 2.17.0
WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de> To: iommu@lists.linux-foundation.org Cc: linux-arch@vger.kernel.org, Michal Simek <monstr@monstr.eu>, Greentime Hu <green.hu@gmail.com>, Vincent Chen <deanbo422@gmail.com>, linux-alpha@vger.kernel.org, linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-c6x-dev@linux-c6x.org, linux-hexagon@vger.kernel.org, linux-m68k@lists.linux-m68k.org, nios2-dev@lists.rocketboards.org, openrisc@lists.librecores.org, linux-parisc@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-xtensa@linux-xtensa.org, linux-kernel@vger.kernel.org Subject: [PATCH 15/20] sh: use dma_direct_ops for the CONFIG_DMA_COHERENT case Date: Fri, 11 May 2018 09:59:40 +0200 [thread overview] Message-ID: <20180511075945.16548-16-hch@lst.de> (raw) Message-ID: <20180511075940.Z129Vjj6mD1Y2v5qvFt8M3jl8awznGVPN6YiIBdvqO4@z> (raw) In-Reply-To: <20180511075945.16548-1-hch@lst.de> This is a slight change in behavior as we avoid the detour through the virtual mapping for the coherent allocator, but if this CPU really is coherent that should be the right thing to do. Signed-off-by: Christoph Hellwig <hch@lst.de> --- arch/sh/Kconfig | 1 + arch/sh/include/asm/dma-mapping.h | 4 ++++ arch/sh/kernel/Makefile | 4 ++-- arch/sh/kernel/dma-nommu.c | 4 ---- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 7d521926041e..d0b095323d62 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -157,6 +157,7 @@ config SWAP_IO_SPACE bool config DMA_COHERENT + select DMA_DIRECT_OPS bool config DMA_NONCOHERENT diff --git a/arch/sh/include/asm/dma-mapping.h b/arch/sh/include/asm/dma-mapping.h index 149e71f95be7..1ebc6a4eb1c5 100644 --- a/arch/sh/include/asm/dma-mapping.h +++ b/arch/sh/include/asm/dma-mapping.h @@ -6,7 +6,11 @@ extern const struct dma_map_ops nommu_dma_ops; static inline const struct dma_map_ops *get_arch_dma_ops(struct bus_type *bus) { +#ifdef CONFIG_DMA_NONCOHERENT return &nommu_dma_ops; +#else + return &dma_direct_ops; +#endif } extern void *dma_generic_alloc_coherent(struct device *dev, size_t size, diff --git a/arch/sh/kernel/Makefile b/arch/sh/kernel/Makefile index dc80041f7363..cb5f1bfb52de 100644 --- a/arch/sh/kernel/Makefile +++ b/arch/sh/kernel/Makefile @@ -12,7 +12,7 @@ endif CFLAGS_REMOVE_return_address.o = -pg -obj-y := debugtraps.o dma-nommu.o dumpstack.o \ +obj-y := debugtraps.o dumpstack.o \ idle.o io.o irq.o irq_$(BITS).o kdebugfs.o \ machvec.o nmi_debug.o process.o \ process_$(BITS).o ptrace.o ptrace_$(BITS).o \ @@ -45,7 +45,7 @@ obj-$(CONFIG_DUMP_CODE) += disassemble.o obj-$(CONFIG_HIBERNATION) += swsusp.o obj-$(CONFIG_DWARF_UNWINDER) += dwarf.o obj-$(CONFIG_PERF_EVENTS) += perf_event.o perf_callchain.o - +obj-$(CONFIG_DMA_NONCOHERENT) += dma-nommu.o obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o ccflags-y := -Werror diff --git a/arch/sh/kernel/dma-nommu.c b/arch/sh/kernel/dma-nommu.c index 79a9edafa5b0..d8689b1cb743 100644 --- a/arch/sh/kernel/dma-nommu.c +++ b/arch/sh/kernel/dma-nommu.c @@ -51,7 +51,6 @@ static int nommu_map_sg(struct device *dev, struct scatterlist *sg, return nents; } -#ifdef CONFIG_DMA_NONCOHERENT static void nommu_sync_single_for_device(struct device *dev, dma_addr_t addr, size_t size, enum dma_data_direction dir) { @@ -67,16 +66,13 @@ static void nommu_sync_sg_for_device(struct device *dev, struct scatterlist *sg, for_each_sg(sg, s, nelems, i) sh_sync_dma_for_device(sg_virt(s), s->length, dir); } -#endif const struct dma_map_ops nommu_dma_ops = { .alloc = dma_generic_alloc_coherent, .free = dma_generic_free_coherent, .map_page = nommu_map_page, .map_sg = nommu_map_sg, -#ifdef CONFIG_DMA_NONCOHERENT .sync_single_for_device = nommu_sync_single_for_device, .sync_sg_for_device = nommu_sync_sg_for_device, -#endif }; EXPORT_SYMBOL(nommu_dma_ops); -- 2.17.0
next prev parent reply other threads:[~2018-05-11 7:59 UTC|newest] Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-05-11 7:59 common non-cache coherent direct dma mapping ops Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig 2018-05-11 7:59 ` [PATCH 01/20] dma-mapping: simplify Kconfig dependencies Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig [not found] ` <20180511075945.16548-1-hch-jcswGhMUV9g@public.gmane.org> 2018-05-11 7:59 ` [PATCH 02/20] dma-mapping: provide a generic dma-noncoherent implementation Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig [not found] ` <20180511075945.16548-3-hch-jcswGhMUV9g@public.gmane.org> 2018-05-18 13:03 ` Alexey Brodkin 2018-05-18 13:03 ` Alexey Brodkin [not found] ` <bad125dff49f6e49c895e818c9d1abb346a46e8e.camel-HKixBCOQz3hWk0Htik3J/w@public.gmane.org> 2018-05-18 13:27 ` hch-jcswGhMUV9g 2018-05-18 13:27 ` hch [not found] ` <20180518132731.GA31125-jcswGhMUV9g@public.gmane.org> 2018-05-18 14:13 ` Alexey Brodkin 2018-05-18 14:13 ` Alexey Brodkin 2018-05-18 17:28 ` Vineet Gupta 2018-05-18 17:28 ` Vineet Gupta 2018-05-18 17:20 ` dma_sync_*_for_cpu and direction=TO_DEVICE (was Re: [PATCH 02/20] dma-mapping: provide a generic dma-noncoherent implementation) Vineet Gupta 2018-05-18 17:20 ` Vineet Gupta 2018-05-18 17:50 ` Russell King - ARM Linux 2018-05-18 17:50 ` Russell King - ARM Linux [not found] ` <20180518175004.GF17671-l+eeeJia6m9URfEZ8mYm6t73F7V6hmMc@public.gmane.org> 2018-05-18 19:57 ` Alexey Brodkin 2018-05-18 19:57 ` Alexey Brodkin [not found] ` <182840dedb4890a88c672b1c5d556920bf89a8fb.camel-HKixBCOQz3hWk0Htik3J/w@public.gmane.org> 2018-05-18 21:33 ` Russell King - ARM Linux 2018-05-18 21:33 ` Russell King - ARM Linux 2018-05-18 20:35 ` Vineet Gupta 2018-05-18 20:35 ` Vineet Gupta 2018-05-18 21:55 ` Russell King - ARM Linux 2018-05-18 21:55 ` Russell King - ARM Linux 2018-05-18 20:05 ` [PATCH 02/20] dma-mapping: provide a generic dma-noncoherent implementation Helge Deller 2018-05-18 20:05 ` Helge Deller [not found] ` <0c5d27e9-2799-eb38-8b09-47a04c48b5c7-Mmb7MZpHnFY@public.gmane.org> 2018-05-19 6:38 ` hch-jcswGhMUV9g 2018-05-19 6:38 ` hch 2018-05-11 7:59 ` [PATCH 03/20] arc: use generic dma_noncoherent_ops Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig [not found] ` <20180511075945.16548-4-hch-jcswGhMUV9g@public.gmane.org> 2018-05-11 12:44 ` Alexey Brodkin 2018-05-11 12:44 ` Alexey Brodkin 2018-05-11 7:59 ` [PATCH 04/20] arm-nommu: " Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig [not found] ` <20180511075945.16548-5-hch-jcswGhMUV9g@public.gmane.org> 2018-05-11 9:11 ` Russell King - ARM Linux 2018-05-11 9:11 ` Russell King - ARM Linux [not found] ` <20180511091114.GA16141-l+eeeJia6m9URfEZ8mYm6t73F7V6hmMc@public.gmane.org> 2018-05-22 11:53 ` Christoph Hellwig 2018-05-22 11:53 ` Christoph Hellwig 2018-05-11 13:56 ` John Garry 2018-05-11 13:56 ` John Garry 2018-05-11 7:59 ` [PATCH 05/20] c6x: " Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig [not found] ` <20180511075945.16548-6-hch-jcswGhMUV9g@public.gmane.org> 2018-05-15 0:25 ` [Linux-c6x-dev] " Mark Salter 2018-05-15 0:25 ` Mark Salter 2018-05-11 7:59 ` [PATCH 06/20] hexagon: " Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig 2018-05-11 7:59 ` [PATCH 07/20] m68k: " Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig 2018-05-11 7:59 ` [PATCH 08/20] microblaze: " Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig 2018-05-11 7:59 ` [PATCH 09/20] microblaze: remove the consistent_sync and consistent_sync_page Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig 2018-05-11 7:59 ` [PATCH 10/20] nds32: use generic dma_noncoherent_ops Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig 2018-05-11 7:59 ` [PATCH 11/20] nios2: " Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig 2018-05-11 7:59 ` [PATCH 12/20] openrisc: " Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig 2018-05-11 7:59 ` [PATCH 13/20] sh: simplify get_arch_dma_ops Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig 2018-05-11 7:59 ` [PATCH 14/20] sh: introduce a sh_cacheop_vaddr helper Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig [this message] 2018-05-11 7:59 ` [PATCH 15/20] sh: use dma_direct_ops for the CONFIG_DMA_COHERENT case Christoph Hellwig 2018-05-11 7:59 ` [PATCH 16/20] mm: split arch/sh/mm/consistent.c Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig 2018-05-11 7:59 ` [PATCH 17/20] sh: use generic dma_noncoherent_ops Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig 2018-05-11 7:59 ` [PATCH 18/20] xtensa: " Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig 2018-05-11 7:59 ` [PATCH 19/20] sparc: " Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig 2018-05-11 7:59 ` [PATCH 20/20] parisc: " Christoph Hellwig 2018-05-11 7:59 ` Christoph Hellwig 2018-05-13 13:26 ` common non-cache coherent direct dma mapping ops Helge Deller 2018-05-13 13:26 ` Helge Deller
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20180511075945.16548-16-hch@lst.de \ --to=hch-jcswghmuv9g@public.gmane.org \ --cc=deanbo422-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \ --cc=green.hu-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \ --cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \ --cc=linux-alpha-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=linux-arch-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \ --cc=linux-c6x-dev-jPsnJVOj+W6hPH1hqNUYSQ@public.gmane.org \ --cc=linux-hexagon-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=linux-m68k-cunTk1MwBs8S/qaLPR03pWD2FQJk+8+b@public.gmane.org \ --cc=linux-parisc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=linux-sh-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=linux-snps-arc-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \ --cc=linux-xtensa-PjhNF2WwrV/0Sa2dR60CXw@public.gmane.org \ --cc=monstr-pSz03upnqPeHXe+LvDLADg@public.gmane.org \ --cc=nios2-dev-g9ZBwUv/Ih/yUk5EbOjzuce+I+R0W71w@public.gmane.org \ --cc=openrisc-cunTk1MwBs9a3B2Vnqf2dGD2FQJk+8+b@public.gmane.org \ --cc=sparclinux-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).