On Fri, Sep 05, 2014 at 04:37:41PM +0100, Grygorii Strashko wrote: > Hi Will,
Hi Grygorii, > On 09/02/2014 08:56 PM, Will Deacon wrote: > > set_arch_dma_coherent_ops is called from of_dma_configure in order to > > swizzle the architectural dma-mapping functions over to a cache-coherent > > implementation. This is currently implemented only for ARM. > > > > In anticipation of re-using this mechanism for IOMMU-backed dma-mapping > > ops too, this patch replaces the function with a broader > > arch_setup_dma_ops callback which is also responsible for setting the > > DMA mask and offset as well as selecting the correct mapping functions. > > > > A further advantage of this split is that it nicely isolates the > > of-specific code from the dma-mapping code, allowing potential reuse by > > other buses (e.g. PCI) in the future. > > I think this patch can introduce a regression if it will be used as is :( > > When this code was initially created there ware a lot of discussion about > and finally it was decided to configure all common (for all arches) DMA > specific parameters for devices in common code, while strictly arch > specific things using arch specific APIs/callbacks. > > The following parameters are common now: > dev->coherent_dma_mask = mask; > dev->dma_mask = &dev->coherent_dma_mask; > dev->dma_pfn_offset = offset; > > and they need to be set always, otherwise it will affect on other > DT-based arches. Ok, in which case we can either configure the struct device in of_dma_configure before calling arch_setup_dma_ops, or we can do the work in a generic version of arch_setup_dma_ops (that I haven't added yet). The former is how it's done in mainline atm, so I'll stick with that. Thanks, Will _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu