Message ID | 1415792454-23161-5-git-send-email-stefano.stabellini@eu.citrix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Russell, this patch needs your feedback. - Stefano On Wed, 12 Nov 2014, Stefano Stabellini wrote: > Introduce a boolean flag and an accessor function to check whether a > device is dma_coherent. Set the flag from set_arch_dma_coherent_ops. > > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> > Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> > Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> > CC: linux@arm.linux.org.uk > --- > arch/arm/include/asm/device.h | 1 + > arch/arm/include/asm/dma-mapping.h | 6 ++++++ > 2 files changed, 7 insertions(+) > > diff --git a/arch/arm/include/asm/device.h b/arch/arm/include/asm/device.h > index dc662fc..4111592 100644 > --- a/arch/arm/include/asm/device.h > +++ b/arch/arm/include/asm/device.h > @@ -17,6 +17,7 @@ struct dev_archdata { > #ifdef CONFIG_ARM_DMA_USE_IOMMU > struct dma_iommu_mapping *mapping; > #endif > + bool dma_coherent; > }; > > struct omap_device; > diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h > index 85738b2..8c3b616 100644 > --- a/arch/arm/include/asm/dma-mapping.h > +++ b/arch/arm/include/asm/dma-mapping.h > @@ -123,11 +123,17 @@ static inline unsigned long dma_max_pfn(struct device *dev) > > static inline int set_arch_dma_coherent_ops(struct device *dev) > { > + dev->archdata.dma_coherent = true; > set_dma_ops(dev, &arm_coherent_dma_ops); > return 0; > } > #define set_arch_dma_coherent_ops(dev) set_arch_dma_coherent_ops(dev) > > +static inline bool is_device_dma_coherent(struct device *dev) > +{ > + return dev->archdata.dma_coherent; > +} > + > static inline dma_addr_t phys_to_dma(struct device *dev, phys_addr_t paddr) > { > unsigned int offset = paddr & ~PAGE_MASK; > -- > 1.7.10.4 >
ping? On Fri, 14 Nov 2014, Stefano Stabellini wrote: > Russell, > this patch needs your feedback. > > - Stefano > > On Wed, 12 Nov 2014, Stefano Stabellini wrote: > > Introduce a boolean flag and an accessor function to check whether a > > device is dma_coherent. Set the flag from set_arch_dma_coherent_ops. > > > > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> > > Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> > > Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> > > CC: linux@arm.linux.org.uk > > --- > > arch/arm/include/asm/device.h | 1 + > > arch/arm/include/asm/dma-mapping.h | 6 ++++++ > > 2 files changed, 7 insertions(+) > > > > diff --git a/arch/arm/include/asm/device.h b/arch/arm/include/asm/device.h > > index dc662fc..4111592 100644 > > --- a/arch/arm/include/asm/device.h > > +++ b/arch/arm/include/asm/device.h > > @@ -17,6 +17,7 @@ struct dev_archdata { > > #ifdef CONFIG_ARM_DMA_USE_IOMMU > > struct dma_iommu_mapping *mapping; > > #endif > > + bool dma_coherent; > > }; > > > > struct omap_device; > > diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h > > index 85738b2..8c3b616 100644 > > --- a/arch/arm/include/asm/dma-mapping.h > > +++ b/arch/arm/include/asm/dma-mapping.h > > @@ -123,11 +123,17 @@ static inline unsigned long dma_max_pfn(struct device *dev) > > > > static inline int set_arch_dma_coherent_ops(struct device *dev) > > { > > + dev->archdata.dma_coherent = true; > > set_dma_ops(dev, &arm_coherent_dma_ops); > > return 0; > > } > > #define set_arch_dma_coherent_ops(dev) set_arch_dma_coherent_ops(dev) > > > > +static inline bool is_device_dma_coherent(struct device *dev) > > +{ > > + return dev->archdata.dma_coherent; > > +} > > + > > static inline dma_addr_t phys_to_dma(struct device *dev, phys_addr_t paddr) > > { > > unsigned int offset = paddr & ~PAGE_MASK; > > -- > > 1.7.10.4 > > >
On Tue, Nov 18, 2014 at 04:49:21PM +0000, Stefano Stabellini wrote:
> ping?
Sending something which wants my attention _To:_ me is always a good idea :)
The patch is fine in itself, but I have a niggle about the
is_device_dma_coherent() - provided this is only used in architecture
specific code, that should be fine. It could probably do with a comment
to that effect in an attempt to discourage drivers using it (thereby
becoming less portable to other architectures.)
On Thu, 20 Nov 2014, Russell King - ARM Linux wrote: > On Tue, Nov 18, 2014 at 04:49:21PM +0000, Stefano Stabellini wrote: > > ping? > > Sending something which wants my attention _To:_ me is always a good idea :) I'll keep that in mind :-) > The patch is fine in itself, but I have a niggle about the > is_device_dma_coherent() - provided this is only used in architecture > specific code, that should be fine. It could probably do with a comment > to that effect in an attempt to discourage drivers using it (thereby > becoming less portable to other architectures.) Can I take this as an Acked-by? Good point regarding the comment. Maybe I can add: /* do not use this function in a driver */
On Thu, Nov 20, 2014 at 10:39:32AM +0000, Stefano Stabellini wrote: > On Thu, 20 Nov 2014, Russell King - ARM Linux wrote: > > On Tue, Nov 18, 2014 at 04:49:21PM +0000, Stefano Stabellini wrote: > > > ping? > > > > Sending something which wants my attention _To:_ me is always a good idea :) > > I'll keep that in mind :-) > > > > The patch is fine in itself, but I have a niggle about the > > is_device_dma_coherent() - provided this is only used in architecture > > specific code, that should be fine. It could probably do with a comment > > to that effect in an attempt to discourage drivers using it (thereby > > becoming less portable to other architectures.) > > Can I take this as an Acked-by? > Good point regarding the comment. Maybe I can add: > > /* do not use this function in a driver */ Provided it gets such a comment, yes. Thanks.
diff --git a/arch/arm/include/asm/device.h b/arch/arm/include/asm/device.h index dc662fc..4111592 100644 --- a/arch/arm/include/asm/device.h +++ b/arch/arm/include/asm/device.h @@ -17,6 +17,7 @@ struct dev_archdata { #ifdef CONFIG_ARM_DMA_USE_IOMMU struct dma_iommu_mapping *mapping; #endif + bool dma_coherent; }; struct omap_device; diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h index 85738b2..8c3b616 100644 --- a/arch/arm/include/asm/dma-mapping.h +++ b/arch/arm/include/asm/dma-mapping.h @@ -123,11 +123,17 @@ static inline unsigned long dma_max_pfn(struct device *dev) static inline int set_arch_dma_coherent_ops(struct device *dev) { + dev->archdata.dma_coherent = true; set_dma_ops(dev, &arm_coherent_dma_ops); return 0; } #define set_arch_dma_coherent_ops(dev) set_arch_dma_coherent_ops(dev) +static inline bool is_device_dma_coherent(struct device *dev) +{ + return dev->archdata.dma_coherent; +} + static inline dma_addr_t phys_to_dma(struct device *dev, phys_addr_t paddr) { unsigned int offset = paddr & ~PAGE_MASK;