* add config symbols for arch_{setup,teardown}_dma_ops @ 2019-02-04 8:14 Christoph Hellwig 2019-02-04 8:14 ` [PATCH 1/2] dma-mapping: add a kconfig symbol for arch_setup_dma_ops availability Christoph Hellwig ` (3 more replies) 0 siblings, 4 replies; 8+ messages in thread From: Christoph Hellwig @ 2019-02-04 8:14 UTC (permalink / raw) To: Vineet Gupta, Russell King, Catalin Marinas, Will Deacon, Paul Burton Cc: linux-snps-arc, linux-arm-kernel, linux-mips, iommu, linux-kernel Hi all, this series adds kconfig symbols to indicate that the architecture provides the arch_setup_dma_ops and arch_teardown_dma_ops hooks. This avoids polluting dma-mapping.h which is included by just about every driver with implementation details, and also removes some clutter. ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] dma-mapping: add a kconfig symbol for arch_setup_dma_ops availability 2019-02-04 8:14 add config symbols for arch_{setup,teardown}_dma_ops Christoph Hellwig @ 2019-02-04 8:14 ` Christoph Hellwig 2019-02-11 16:41 ` Vineet Gupta 2019-02-12 2:02 ` Paul Burton 2019-02-04 8:14 ` [PATCH 2/2] dma-mapping: add a kconfig symbol for arch_teardown_dma_ops availability Christoph Hellwig ` (2 subsequent siblings) 3 siblings, 2 replies; 8+ messages in thread From: Christoph Hellwig @ 2019-02-04 8:14 UTC (permalink / raw) To: Vineet Gupta, Russell King, Catalin Marinas, Will Deacon, Paul Burton Cc: linux-snps-arc, linux-arm-kernel, linux-mips, iommu, linux-kernel Signed-off-by: Christoph Hellwig <hch@lst.de> --- arch/arc/Kconfig | 1 + arch/arc/include/asm/Kbuild | 1 + arch/arc/include/asm/dma-mapping.h | 13 ------------- arch/arm/Kconfig | 1 + arch/arm/include/asm/dma-mapping.h | 4 ---- arch/arm64/Kconfig | 1 + arch/arm64/include/asm/dma-mapping.h | 4 ---- arch/mips/Kconfig | 1 + arch/mips/include/asm/dma-mapping.h | 10 ---------- arch/mips/mm/dma-noncoherent.c | 8 ++++++++ include/linux/dma-mapping.h | 12 ++++++++---- kernel/dma/Kconfig | 3 +++ 12 files changed, 24 insertions(+), 35 deletions(-) delete mode 100644 arch/arc/include/asm/dma-mapping.h diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig index 376366a7db81..2ab27d88eb1c 100644 --- a/arch/arc/Kconfig +++ b/arch/arc/Kconfig @@ -11,6 +11,7 @@ config ARC select ARC_TIMERS select ARCH_HAS_DMA_COHERENT_TO_PFN select ARCH_HAS_PTE_SPECIAL + select ARCH_HAS_SETUP_DMA_OPS select ARCH_HAS_SYNC_DMA_FOR_CPU select ARCH_HAS_SYNC_DMA_FOR_DEVICE select ARCH_SUPPORTS_ATOMIC_RMW if ARC_HAS_LLSC diff --git a/arch/arc/include/asm/Kbuild b/arch/arc/include/asm/Kbuild index caa270261521..b41f8881ecc8 100644 --- a/arch/arc/include/asm/Kbuild +++ b/arch/arc/include/asm/Kbuild @@ -3,6 +3,7 @@ generic-y += bugs.h generic-y += compat.h generic-y += device.h generic-y += div64.h +generic-y += dma-mapping.h generic-y += emergency-restart.h generic-y += extable.h generic-y += ftrace.h diff --git a/arch/arc/include/asm/dma-mapping.h b/arch/arc/include/asm/dma-mapping.h deleted file mode 100644 index c946c0a83e76..000000000000 --- a/arch/arc/include/asm/dma-mapping.h +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -// (C) 2018 Synopsys, Inc. (www.synopsys.com) - -#ifndef ASM_ARC_DMA_MAPPING_H -#define ASM_ARC_DMA_MAPPING_H - -#include <asm-generic/dma-mapping.h> - -void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, - const struct iommu_ops *iommu, bool coherent); -#define arch_setup_dma_ops arch_setup_dma_ops - -#endif diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 664e918e2624..c1cf44f00870 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -12,6 +12,7 @@ config ARM select ARCH_HAS_MEMBARRIER_SYNC_CORE select ARCH_HAS_PTE_SPECIAL if ARM_LPAE select ARCH_HAS_PHYS_TO_DMA + select ARCH_HAS_SETUP_DMA_OPS select ARCH_HAS_SET_MEMORY select ARCH_HAS_STRICT_KERNEL_RWX if MMU && !XIP_KERNEL select ARCH_HAS_STRICT_MODULE_RWX if MMU diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h index 31d3b96f0f4b..a224b6e39e58 100644 --- a/arch/arm/include/asm/dma-mapping.h +++ b/arch/arm/include/asm/dma-mapping.h @@ -96,10 +96,6 @@ static inline unsigned long dma_max_pfn(struct device *dev) } #define dma_max_pfn(dev) dma_max_pfn(dev) -#define arch_setup_dma_ops arch_setup_dma_ops -extern void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, - const struct iommu_ops *iommu, bool coherent); - #ifdef CONFIG_MMU #define arch_teardown_dma_ops arch_teardown_dma_ops extern void arch_teardown_dma_ops(struct device *dev); diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index a4168d366127..63909f318d56 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -22,6 +22,7 @@ config ARM64 select ARCH_HAS_KCOV select ARCH_HAS_MEMBARRIER_SYNC_CORE select ARCH_HAS_PTE_SPECIAL + select ARCH_HAS_SETUP_DMA_OPS select ARCH_HAS_SET_MEMORY select ARCH_HAS_STRICT_KERNEL_RWX select ARCH_HAS_STRICT_MODULE_RWX diff --git a/arch/arm64/include/asm/dma-mapping.h b/arch/arm64/include/asm/dma-mapping.h index 95dbf3ef735a..de96507ee2c1 100644 --- a/arch/arm64/include/asm/dma-mapping.h +++ b/arch/arm64/include/asm/dma-mapping.h @@ -29,10 +29,6 @@ static inline const struct dma_map_ops *get_arch_dma_ops(struct bus_type *bus) return NULL; } -void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, - const struct iommu_ops *iommu, bool coherent); -#define arch_setup_dma_ops arch_setup_dma_ops - #ifdef CONFIG_IOMMU_DMA void arch_teardown_dma_ops(struct device *dev); #define arch_teardown_dma_ops arch_teardown_dma_ops diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 0d14f51d0002..dc5d70f674e0 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -1118,6 +1118,7 @@ config DMA_MAYBE_COHERENT config DMA_PERDEV_COHERENT bool + select ARCH_HAS_SETUP_DMA_OPS select DMA_NONCOHERENT config DMA_NONCOHERENT diff --git a/arch/mips/include/asm/dma-mapping.h b/arch/mips/include/asm/dma-mapping.h index 20dfaad3a55d..34de7b17b41b 100644 --- a/arch/mips/include/asm/dma-mapping.h +++ b/arch/mips/include/asm/dma-mapping.h @@ -15,14 +15,4 @@ static inline const struct dma_map_ops *get_arch_dma_ops(struct bus_type *bus) #endif } -#define arch_setup_dma_ops arch_setup_dma_ops -static inline void arch_setup_dma_ops(struct device *dev, u64 dma_base, - u64 size, const struct iommu_ops *iommu, - bool coherent) -{ -#ifdef CONFIG_DMA_PERDEV_COHERENT - dev->dma_coherent = coherent; -#endif -} - #endif /* _ASM_DMA_MAPPING_H */ diff --git a/arch/mips/mm/dma-noncoherent.c b/arch/mips/mm/dma-noncoherent.c index cb38461391cb..0606fc87b294 100644 --- a/arch/mips/mm/dma-noncoherent.c +++ b/arch/mips/mm/dma-noncoherent.c @@ -159,3 +159,11 @@ void arch_dma_cache_sync(struct device *dev, void *vaddr, size_t size, dma_sync_virt(vaddr, size, direction); } + +#ifdef CONFIG_DMA_PERDEV_COHERENT +void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, + const struct iommu_ops *iommu, bool coherent) +{ + dev->dma_coherent = coherent; +} +#endif diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index b904d55247ab..2b20d60e6158 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -671,11 +671,15 @@ static inline int dma_coerce_mask_and_coherent(struct device *dev, u64 mask) return dma_set_mask_and_coherent(dev, mask); } -#ifndef arch_setup_dma_ops +#ifdef CONFIG_ARCH_HAS_SETUP_DMA_OPS +void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, + const struct iommu_ops *iommu, bool coherent); +#else static inline void arch_setup_dma_ops(struct device *dev, u64 dma_base, - u64 size, const struct iommu_ops *iommu, - bool coherent) { } -#endif + u64 size, const struct iommu_ops *iommu, bool coherent) +{ +} +#endif /* CONFIG_ARCH_HAS_SETUP_DMA_OPS */ #ifndef arch_teardown_dma_ops static inline void arch_teardown_dma_ops(struct device *dev) { } diff --git a/kernel/dma/Kconfig b/kernel/dma/Kconfig index ca88b867e7fe..c44599d128e8 100644 --- a/kernel/dma/Kconfig +++ b/kernel/dma/Kconfig @@ -19,6 +19,9 @@ config ARCH_HAS_DMA_COHERENCE_H config HAVE_GENERIC_DMA_COHERENT bool +config ARCH_HAS_SETUP_DMA_OPS + bool + config ARCH_HAS_SYNC_DMA_FOR_DEVICE bool -- 2.20.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] dma-mapping: add a kconfig symbol for arch_setup_dma_ops availability 2019-02-04 8:14 ` [PATCH 1/2] dma-mapping: add a kconfig symbol for arch_setup_dma_ops availability Christoph Hellwig @ 2019-02-11 16:41 ` Vineet Gupta 2019-02-12 2:02 ` Paul Burton 1 sibling, 0 replies; 8+ messages in thread From: Vineet Gupta @ 2019-02-11 16:41 UTC (permalink / raw) To: Christoph Hellwig, Russell King, Catalin Marinas, Will Deacon, Paul Burton Cc: Eugeniy Paltsev, linux-snps-arc, linux-arm-kernel, linux-mips, iommu, linux-kernel +CC Eugeniy As resident ARC DMA expert can you please this a quick spin. -Vineet On 2/4/19 12:14 AM, Christoph Hellwig wrote: > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- > arch/arc/Kconfig | 1 + > arch/arc/include/asm/Kbuild | 1 + > arch/arc/include/asm/dma-mapping.h | 13 ------------- > arch/arm/Kconfig | 1 + > arch/arm/include/asm/dma-mapping.h | 4 ---- > arch/arm64/Kconfig | 1 + > arch/arm64/include/asm/dma-mapping.h | 4 ---- > arch/mips/Kconfig | 1 + > arch/mips/include/asm/dma-mapping.h | 10 ---------- > arch/mips/mm/dma-noncoherent.c | 8 ++++++++ > include/linux/dma-mapping.h | 12 ++++++++---- > kernel/dma/Kconfig | 3 +++ > 12 files changed, 24 insertions(+), 35 deletions(-) > delete mode 100644 arch/arc/include/asm/dma-mapping.h > > diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig > index 376366a7db81..2ab27d88eb1c 100644 > --- a/arch/arc/Kconfig > +++ b/arch/arc/Kconfig > @@ -11,6 +11,7 @@ config ARC > select ARC_TIMERS > select ARCH_HAS_DMA_COHERENT_TO_PFN > select ARCH_HAS_PTE_SPECIAL > + select ARCH_HAS_SETUP_DMA_OPS > select ARCH_HAS_SYNC_DMA_FOR_CPU > select ARCH_HAS_SYNC_DMA_FOR_DEVICE > select ARCH_SUPPORTS_ATOMIC_RMW if ARC_HAS_LLSC > diff --git a/arch/arc/include/asm/Kbuild b/arch/arc/include/asm/Kbuild > index caa270261521..b41f8881ecc8 100644 > --- a/arch/arc/include/asm/Kbuild > +++ b/arch/arc/include/asm/Kbuild > @@ -3,6 +3,7 @@ generic-y += bugs.h > generic-y += compat.h > generic-y += device.h > generic-y += div64.h > +generic-y += dma-mapping.h > generic-y += emergency-restart.h > generic-y += extable.h > generic-y += ftrace.h > diff --git a/arch/arc/include/asm/dma-mapping.h b/arch/arc/include/asm/dma-mapping.h > deleted file mode 100644 > index c946c0a83e76..000000000000 > --- a/arch/arc/include/asm/dma-mapping.h > +++ /dev/null > @@ -1,13 +0,0 @@ > -// SPDX-License-Identifier: GPL-2.0 > -// (C) 2018 Synopsys, Inc. (www.synopsys.com) > - > -#ifndef ASM_ARC_DMA_MAPPING_H > -#define ASM_ARC_DMA_MAPPING_H > - > -#include <asm-generic/dma-mapping.h> > - > -void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, > - const struct iommu_ops *iommu, bool coherent); > -#define arch_setup_dma_ops arch_setup_dma_ops > - > -#endif > diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig > index 664e918e2624..c1cf44f00870 100644 > --- a/arch/arm/Kconfig > +++ b/arch/arm/Kconfig > @@ -12,6 +12,7 @@ config ARM > select ARCH_HAS_MEMBARRIER_SYNC_CORE > select ARCH_HAS_PTE_SPECIAL if ARM_LPAE > select ARCH_HAS_PHYS_TO_DMA > + select ARCH_HAS_SETUP_DMA_OPS > select ARCH_HAS_SET_MEMORY > select ARCH_HAS_STRICT_KERNEL_RWX if MMU && !XIP_KERNEL > select ARCH_HAS_STRICT_MODULE_RWX if MMU > diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h > index 31d3b96f0f4b..a224b6e39e58 100644 > --- a/arch/arm/include/asm/dma-mapping.h > +++ b/arch/arm/include/asm/dma-mapping.h > @@ -96,10 +96,6 @@ static inline unsigned long dma_max_pfn(struct device *dev) > } > #define dma_max_pfn(dev) dma_max_pfn(dev) > > -#define arch_setup_dma_ops arch_setup_dma_ops > -extern void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, > - const struct iommu_ops *iommu, bool coherent); > - > #ifdef CONFIG_MMU > #define arch_teardown_dma_ops arch_teardown_dma_ops > extern void arch_teardown_dma_ops(struct device *dev); > diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig > index a4168d366127..63909f318d56 100644 > --- a/arch/arm64/Kconfig > +++ b/arch/arm64/Kconfig > @@ -22,6 +22,7 @@ config ARM64 > select ARCH_HAS_KCOV > select ARCH_HAS_MEMBARRIER_SYNC_CORE > select ARCH_HAS_PTE_SPECIAL > + select ARCH_HAS_SETUP_DMA_OPS > select ARCH_HAS_SET_MEMORY > select ARCH_HAS_STRICT_KERNEL_RWX > select ARCH_HAS_STRICT_MODULE_RWX > diff --git a/arch/arm64/include/asm/dma-mapping.h b/arch/arm64/include/asm/dma-mapping.h > index 95dbf3ef735a..de96507ee2c1 100644 > --- a/arch/arm64/include/asm/dma-mapping.h > +++ b/arch/arm64/include/asm/dma-mapping.h > @@ -29,10 +29,6 @@ static inline const struct dma_map_ops *get_arch_dma_ops(struct bus_type *bus) > return NULL; > } > > -void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, > - const struct iommu_ops *iommu, bool coherent); > -#define arch_setup_dma_ops arch_setup_dma_ops > - > #ifdef CONFIG_IOMMU_DMA > void arch_teardown_dma_ops(struct device *dev); > #define arch_teardown_dma_ops arch_teardown_dma_ops > diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig > index 0d14f51d0002..dc5d70f674e0 100644 > --- a/arch/mips/Kconfig > +++ b/arch/mips/Kconfig > @@ -1118,6 +1118,7 @@ config DMA_MAYBE_COHERENT > > config DMA_PERDEV_COHERENT > bool > + select ARCH_HAS_SETUP_DMA_OPS > select DMA_NONCOHERENT > > config DMA_NONCOHERENT > diff --git a/arch/mips/include/asm/dma-mapping.h b/arch/mips/include/asm/dma-mapping.h > index 20dfaad3a55d..34de7b17b41b 100644 > --- a/arch/mips/include/asm/dma-mapping.h > +++ b/arch/mips/include/asm/dma-mapping.h > @@ -15,14 +15,4 @@ static inline const struct dma_map_ops *get_arch_dma_ops(struct bus_type *bus) > #endif > } > > -#define arch_setup_dma_ops arch_setup_dma_ops > -static inline void arch_setup_dma_ops(struct device *dev, u64 dma_base, > - u64 size, const struct iommu_ops *iommu, > - bool coherent) > -{ > -#ifdef CONFIG_DMA_PERDEV_COHERENT > - dev->dma_coherent = coherent; > -#endif > -} > - > #endif /* _ASM_DMA_MAPPING_H */ > diff --git a/arch/mips/mm/dma-noncoherent.c b/arch/mips/mm/dma-noncoherent.c > index cb38461391cb..0606fc87b294 100644 > --- a/arch/mips/mm/dma-noncoherent.c > +++ b/arch/mips/mm/dma-noncoherent.c > @@ -159,3 +159,11 @@ void arch_dma_cache_sync(struct device *dev, void *vaddr, size_t size, > > dma_sync_virt(vaddr, size, direction); > } > + > +#ifdef CONFIG_DMA_PERDEV_COHERENT > +void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, > + const struct iommu_ops *iommu, bool coherent) > +{ > + dev->dma_coherent = coherent; > +} > +#endif > diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h > index b904d55247ab..2b20d60e6158 100644 > --- a/include/linux/dma-mapping.h > +++ b/include/linux/dma-mapping.h > @@ -671,11 +671,15 @@ static inline int dma_coerce_mask_and_coherent(struct device *dev, u64 mask) > return dma_set_mask_and_coherent(dev, mask); > } > > -#ifndef arch_setup_dma_ops > +#ifdef CONFIG_ARCH_HAS_SETUP_DMA_OPS > +void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, > + const struct iommu_ops *iommu, bool coherent); > +#else > static inline void arch_setup_dma_ops(struct device *dev, u64 dma_base, > - u64 size, const struct iommu_ops *iommu, > - bool coherent) { } > -#endif > + u64 size, const struct iommu_ops *iommu, bool coherent) > +{ > +} > +#endif /* CONFIG_ARCH_HAS_SETUP_DMA_OPS */ > > #ifndef arch_teardown_dma_ops > static inline void arch_teardown_dma_ops(struct device *dev) { } > diff --git a/kernel/dma/Kconfig b/kernel/dma/Kconfig > index ca88b867e7fe..c44599d128e8 100644 > --- a/kernel/dma/Kconfig > +++ b/kernel/dma/Kconfig > @@ -19,6 +19,9 @@ config ARCH_HAS_DMA_COHERENCE_H > config HAVE_GENERIC_DMA_COHERENT > bool > > +config ARCH_HAS_SETUP_DMA_OPS > + bool > + > config ARCH_HAS_SYNC_DMA_FOR_DEVICE > bool > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] dma-mapping: add a kconfig symbol for arch_setup_dma_ops availability 2019-02-04 8:14 ` [PATCH 1/2] dma-mapping: add a kconfig symbol for arch_setup_dma_ops availability Christoph Hellwig 2019-02-11 16:41 ` Vineet Gupta @ 2019-02-12 2:02 ` Paul Burton 1 sibling, 0 replies; 8+ messages in thread From: Paul Burton @ 2019-02-12 2:02 UTC (permalink / raw) To: Christoph Hellwig Cc: Vineet Gupta, Russell King, Catalin Marinas, Will Deacon, linux-snps-arc, linux-arm-kernel, linux-mips, iommu, linux-kernel Hi Christoph, On Mon, Feb 04, 2019 at 09:14:19AM +0100, Christoph Hellwig wrote: > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- > arch/arc/Kconfig | 1 + > arch/arc/include/asm/Kbuild | 1 + > arch/arc/include/asm/dma-mapping.h | 13 ------------- > arch/arm/Kconfig | 1 + > arch/arm/include/asm/dma-mapping.h | 4 ---- > arch/arm64/Kconfig | 1 + > arch/arm64/include/asm/dma-mapping.h | 4 ---- > arch/mips/Kconfig | 1 + > arch/mips/include/asm/dma-mapping.h | 10 ---------- > arch/mips/mm/dma-noncoherent.c | 8 ++++++++ Acked-by: Paul Burton <paul.burton@mips.com> # MIPS Thanks, Paul ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/2] dma-mapping: add a kconfig symbol for arch_teardown_dma_ops availability 2019-02-04 8:14 add config symbols for arch_{setup,teardown}_dma_ops Christoph Hellwig 2019-02-04 8:14 ` [PATCH 1/2] dma-mapping: add a kconfig symbol for arch_setup_dma_ops availability Christoph Hellwig @ 2019-02-04 8:14 ` Christoph Hellwig 2019-02-11 13:21 ` add config symbols for arch_{setup,teardown}_dma_ops Christoph Hellwig 2019-02-13 18:13 ` Christoph Hellwig 3 siblings, 0 replies; 8+ messages in thread From: Christoph Hellwig @ 2019-02-04 8:14 UTC (permalink / raw) To: Vineet Gupta, Russell King, Catalin Marinas, Will Deacon, Paul Burton Cc: linux-snps-arc, linux-arm-kernel, linux-mips, iommu, linux-kernel Signed-off-by: Christoph Hellwig <hch@lst.de> --- arch/arm/Kconfig | 1 + arch/arm/include/asm/dma-mapping.h | 5 ----- arch/arm64/Kconfig | 1 + arch/arm64/include/asm/dma-mapping.h | 5 ----- include/linux/dma-mapping.h | 10 +++++++--- kernel/dma/Kconfig | 3 +++ 6 files changed, 12 insertions(+), 13 deletions(-) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index c1cf44f00870..4bb36ae71b14 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -16,6 +16,7 @@ config ARM select ARCH_HAS_SET_MEMORY select ARCH_HAS_STRICT_KERNEL_RWX if MMU && !XIP_KERNEL select ARCH_HAS_STRICT_MODULE_RWX if MMU + select ARCH_HAS_TEARDOWN_DMA_OPS if MMU select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST select ARCH_HAVE_CUSTOM_GPIO_H select ARCH_HAS_GCOV_PROFILE_ALL diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h index a224b6e39e58..03ba90ffc0f8 100644 --- a/arch/arm/include/asm/dma-mapping.h +++ b/arch/arm/include/asm/dma-mapping.h @@ -96,11 +96,6 @@ static inline unsigned long dma_max_pfn(struct device *dev) } #define dma_max_pfn(dev) dma_max_pfn(dev) -#ifdef CONFIG_MMU -#define arch_teardown_dma_ops arch_teardown_dma_ops -extern void arch_teardown_dma_ops(struct device *dev); -#endif - /* do not use this function in a driver */ static inline bool is_device_dma_coherent(struct device *dev) { diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 63909f318d56..87ec7be25e97 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -29,6 +29,7 @@ config ARM64 select ARCH_HAS_SYNC_DMA_FOR_DEVICE select ARCH_HAS_SYNC_DMA_FOR_CPU select ARCH_HAS_SYSCALL_WRAPPER + select ARCH_HAS_TEARDOWN_DMA_OPS if IOMMU_SUPPORT select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST select ARCH_HAVE_NMI_SAFE_CMPXCHG select ARCH_INLINE_READ_LOCK if !PREEMPT diff --git a/arch/arm64/include/asm/dma-mapping.h b/arch/arm64/include/asm/dma-mapping.h index de96507ee2c1..de98191e4c7d 100644 --- a/arch/arm64/include/asm/dma-mapping.h +++ b/arch/arm64/include/asm/dma-mapping.h @@ -29,11 +29,6 @@ static inline const struct dma_map_ops *get_arch_dma_ops(struct bus_type *bus) return NULL; } -#ifdef CONFIG_IOMMU_DMA -void arch_teardown_dma_ops(struct device *dev); -#define arch_teardown_dma_ops arch_teardown_dma_ops -#endif - /* * Do not use this function in a driver, it is only provided for * arch/arm/mm/xen.c, which is used by arm64 as well. diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index 2b20d60e6158..4210c5c1dd21 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -681,9 +681,13 @@ static inline void arch_setup_dma_ops(struct device *dev, u64 dma_base, } #endif /* CONFIG_ARCH_HAS_SETUP_DMA_OPS */ -#ifndef arch_teardown_dma_ops -static inline void arch_teardown_dma_ops(struct device *dev) { } -#endif +#ifdef CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS +void arch_teardown_dma_ops(struct device *dev); +#else +static inline void arch_teardown_dma_ops(struct device *dev) +{ +} +#endif /* CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS */ static inline unsigned int dma_get_max_seg_size(struct device *dev) { diff --git a/kernel/dma/Kconfig b/kernel/dma/Kconfig index c44599d128e8..77a352259796 100644 --- a/kernel/dma/Kconfig +++ b/kernel/dma/Kconfig @@ -22,6 +22,9 @@ config HAVE_GENERIC_DMA_COHERENT config ARCH_HAS_SETUP_DMA_OPS bool +config ARCH_HAS_TEARDOWN_DMA_OPS + bool + config ARCH_HAS_SYNC_DMA_FOR_DEVICE bool -- 2.20.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: add config symbols for arch_{setup,teardown}_dma_ops 2019-02-04 8:14 add config symbols for arch_{setup,teardown}_dma_ops Christoph Hellwig 2019-02-04 8:14 ` [PATCH 1/2] dma-mapping: add a kconfig symbol for arch_setup_dma_ops availability Christoph Hellwig 2019-02-04 8:14 ` [PATCH 2/2] dma-mapping: add a kconfig symbol for arch_teardown_dma_ops availability Christoph Hellwig @ 2019-02-11 13:21 ` Christoph Hellwig 2019-02-11 14:00 ` Catalin Marinas 2019-02-13 18:13 ` Christoph Hellwig 3 siblings, 1 reply; 8+ messages in thread From: Christoph Hellwig @ 2019-02-11 13:21 UTC (permalink / raw) To: Vineet Gupta, Russell King, Catalin Marinas, Will Deacon, Paul Burton Cc: iommu, linux-snps-arc, linux-mips, linux-arm-kernel, linux-kernel Any chance to get a quick review on this small series? On Mon, Feb 04, 2019 at 09:14:18AM +0100, Christoph Hellwig wrote: > Hi all, > > this series adds kconfig symbols to indicate that the architecture > provides the arch_setup_dma_ops and arch_teardown_dma_ops hooks. > > This avoids polluting dma-mapping.h which is included by just about > every driver with implementation details, and also removes some > clutter. > _______________________________________________ > iommu mailing list > iommu@lists.linux-foundation.org > https://lists.linuxfoundation.org/mailman/listinfo/iommu ---end quoted text--- ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: add config symbols for arch_{setup,teardown}_dma_ops 2019-02-11 13:21 ` add config symbols for arch_{setup,teardown}_dma_ops Christoph Hellwig @ 2019-02-11 14:00 ` Catalin Marinas 0 siblings, 0 replies; 8+ messages in thread From: Catalin Marinas @ 2019-02-11 14:00 UTC (permalink / raw) To: Christoph Hellwig Cc: Vineet Gupta, Russell King, Will Deacon, Paul Burton, iommu, linux-snps-arc, linux-mips, linux-arm-kernel, linux-kernel On Mon, Feb 11, 2019 at 02:21:56PM +0100, Christoph Hellwig wrote: > Any chance to get a quick review on this small series? For arm64: Acked-by: Catalin Marinas <catalin.marinas@arm.com> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: add config symbols for arch_{setup,teardown}_dma_ops 2019-02-04 8:14 add config symbols for arch_{setup,teardown}_dma_ops Christoph Hellwig ` (2 preceding siblings ...) 2019-02-11 13:21 ` add config symbols for arch_{setup,teardown}_dma_ops Christoph Hellwig @ 2019-02-13 18:13 ` Christoph Hellwig 3 siblings, 0 replies; 8+ messages in thread From: Christoph Hellwig @ 2019-02-13 18:13 UTC (permalink / raw) To: Vineet Gupta, Russell King, Catalin Marinas, Will Deacon, Paul Burton Cc: iommu, linux-snps-arc, linux-mips, linux-arm-kernel, linux-kernel Thanks Catalin and Paul. I've merged this into the dma-mapping for-next branch. ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-02-13 18:13 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-02-04 8:14 add config symbols for arch_{setup,teardown}_dma_ops Christoph Hellwig 2019-02-04 8:14 ` [PATCH 1/2] dma-mapping: add a kconfig symbol for arch_setup_dma_ops availability Christoph Hellwig 2019-02-11 16:41 ` Vineet Gupta 2019-02-12 2:02 ` Paul Burton 2019-02-04 8:14 ` [PATCH 2/2] dma-mapping: add a kconfig symbol for arch_teardown_dma_ops availability Christoph Hellwig 2019-02-11 13:21 ` add config symbols for arch_{setup,teardown}_dma_ops Christoph Hellwig 2019-02-11 14:00 ` Catalin Marinas 2019-02-13 18:13 ` Christoph Hellwig
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).