On Mon, Oct 26, 2009 at 05:24:58PM -0600, Alex Williamson wrote: > Move dma_generic_alloc_coherent() out of x86 code and create > corresponding dma_generic_free_coherent() for symmetry. These > can then be used by IOMMU drivers attempting to implement > passthrough mode. > Except that dma_generic_alloc_coherent() is only "generic" for platforms with consistent DMA. Everyone else will need a cacheflush and potentially a remap. It's not even obvious from looking at the consistent DMA platforms that they'll be able to use it out of the box due to expecting something other than page_address(), which all suggests that this is better off remaining an x86-only routine. This is also making changes to the DMA-API without any documentation updates and without consulting with any other architecture people. If you wish to make a proposal for a DMA-API addition, then this should be made to linux-arch rather than hidden in an iommu patchset. Beyond that, we presently have: - dma_alloc_coherent() - dma_alloc_noncoherent() - dma_alloc_from_coherent() defined in the API. Making an addition to this for your fallback case seems workable, but it's something that will have to be handled differently for each architecture. You might be able to get away with something generic enough to stash in drivers/base/dma-coherent.c, but from a first look, I wouldn't count on it. It was bad enough when the x86-specific flush_write_buffers() snuck in to the "generic" dma mapping code, but this particular case is much more problematic. -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html